MFC获取控件文本和显示控件文本谢谢~~

MFC获取控件文本和显示控件文本谢谢~~,第1张

错误提示是说函数不能接受两个参数。这是因为命名控件造成的。MFC中很多函数名跟SDK里的都是重复的。如果你在MFC中要用API那么建议养成良好习惯在函数前面加:: 也就是改为"::GetDlgItemText(xxx,xxx)"对于第一个句柄参数你可以用this指针。::GetDlgItemText(this->m_hWnd,xxx,xxx,xxx)第二个参数是控件ID,第三个是接受的字符的缓存指针,第四个是最大接受几个字符的个数;如果你省略了"::"那么默认是使用的 MFC的CWnd类的方法。可以这样调用:CString str;this->GetDlgItemText(IDC_TEXT,str); 补充: 完蛋了,现在才发现原来已经回答了好几个你的相关问题,不知道会不会被举报刷分。 追问: 不好意思,还是不行。说明下:我把上面的GetDlgItemText和SetDlgItemText函数写在线程里了。为什么不行呢?还是有错误提示!谢谢! 回答: 错误提示是什么你也不贴上来 不过我已经大致猜出来了 既然你是写在线程函数里 那么错误提示 应该是说this不是静态变量什么的。当然啊,线程函数是不能使用类的成员的。解决方法有两个第一:定义一个全局变量保存窗口句柄,在线程函数里用全局变量。第二:把类的指针当做参数传递给线程函数。你创建线程的时候 CreateThread(NULL,0,NULL,this,0,NULL);线程处理函数:DWORD WINAPI ThreadPro(LPVOID lpvoid){ xxxxxx p = (xxxxxx )lpvoid;//关键就是这句代码了,把传进来的参数转换成类指针。"XXXXXX"是你的类名。

 CWnd pWnd=CWnd::FindWindow(NULL,_T("EightPuzzle"));//获取目标窗口

 pWnd->SendMessage(/消息的代号/,NULL,0);//发送消息

对话框属性->样式,勾上最大化框。

再在类向导里,选择WM_SIZE,然后Edit Code

VC++全屏时,根据对话框大小调整控件大小

1、在对话框类中加入成员变量CRect m_rect;用于保存对话框大小变化前的大小;

2、在对话框的OnInitDialog()函数中获取对话框创建时的大小:GetClientRect(&m_rect);

3、在WM_SIZE的响应函数OnSize()中加入以下代码:

C/C++ code

CWnd pWnd;

pWnd = GetDlgItem(IDC_LIST); //获取控件句柄

if(pWnd && nType!=1)//判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建

{

CRect rect; //获取控件变化前大小

pWnd->GetWindowRect(&rect);

ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标

// cx/m_rectWidth()为对话框在横向的变化比例

rectleft=rectleftcx/m_rectWidth();/////调整控件大小

rectright=rectrightcx/m_rectWidth();

recttop=recttopcy/m_rectHeight();

rectbottom=rectbottomcy/m_rectHeight();

pWnd->MoveWindow(rect);//设置控件大小

}

GetClientRect(&m_rect);//将变化后的对话框大小设为旧大小

看看你身后的质疑,使用ATL。

HWND HWND函数GetDlgItem(IDC_LIST)在,

CListCtrl的LC(HWND); / /或者使用附加要求。

在手柄上一般使用ATL,MFC类指针一般。

例如,函数GetDlgItem返回HWND,ATL,MFC返回的CWnd

看了你后面的追问,用到了ATL。

HWND hWnd = GetDlgItem(IDC_LIST);

CListCtrl lc(hWnd); //或者用Attach也行。

ATL中一般使用句柄,MFC中一般是类指针。

比如GetDlgItem,ATL返回HWND,MFC返回CWnd

void SystemDlg::OnSize(UINT nType, int cx, int cy)

{

CDialogEx::OnSize(nType, cx, cy);

if(nType==1) return; //最小化则什么都不做 

CWnd pWnd; 

pWnd = GetDlgItem(Btn); //获取控件句柄

ChangeSize(pWnd,cx,cy); //调用changesize()函数

GetClientRect(&m_rect); //将变化后的对话框设置为旧大小

Invalidate();//声明无效区域

UpdateWindow();//立即更新程序

}

void SystemDlg::ChangeSize(CWnd pWnd, int cx, int cy)

{

if (pWnd)

{

CRect rect; 

pWnd->GetWindowRect(&rect); //获取控件变化前的大小

ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标 

rectleft=rectleftcx/m_rectWidth();//调整控件大小 ,cx/m_rectWidth()为对话框在横向的变化比例

rectright=rectrightcx/m_rectWidth(); //cx存储的是变化后的宽度,cy存储的是变化后的高度

recttop=recttopcy/m_rectHeight(); //m_rectheight()表示的是变化前主窗体的高度

rectbottom=rectbottomcy/m_rectHeight();

pWnd->MoveWindow(rect);//设置控件大小

}

}

以上就是关于MFC获取控件文本和显示控件文本谢谢~~全部的内容,包括:MFC获取控件文本和显示控件文本谢谢~~、MFC 怎么在线程中获取当前子窗口的句柄(应用:基本对话框)、MFC如何将窗口中所有控件大小随父窗口大小改变等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9481798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存