线程中不能用updatedata()的解决办法
来源:互联网 发布:阿里云风云令更换手机 编辑:程序博客网 时间:2024/05/17 22:28
用sendmessage的方式解决(菜鸟步骤)
1、在主窗体头文件中用下列函数注册windows消息
const UINT WM_MYUPDATEDATA = ::RegisterWindowMessage(_T("MyUpdateData"));
2、在主窗体头文件中的消息映射函数申明处添加下列映射
afx_msg void OnUpdateMyData(WPARAM wp, LPARAM lp);
3、在主窗体cpp文件中添加注册函数在END_MESSAGE_MAP()之前
ON_REGISTERED_MESSAGE(WM_MYUPDATEDATA,OnUpdateMyData)
4、在主窗体cpp文件中添加函数
void CDlg::OnUpdateMyData(WPARAM wp,LPARAM lp)
{
UpdateData(wp);
}
5、在所用线程中添加更新函数消息,即进行了updatedata()
pDlg->SendMessage(WM_MYUPDATEDATA,true);
MFC线程中不能用UpdateData,怎么解决(详细).
获得句柄,通过GetWindowText( HWND, buffer, len );得到控件内容。可以把父窗口指针作为参数传到线程里来获取句柄。同理,可以通过SetWindowText设置内容。
比如传入的是对话框的指针pDlg,比如你已知ID,那么设置如下:pDlg->GetDlgItem( ID )->SetWindowText("你要设置的东西");
另一种方法是消息处理,自定义消息,然后线程内PostMessage和参数,在你的外部来处理该消息。
补充:
1、HWND hWnd = ( CWnd* )pWnd->GetDlgItem( ID );
2、线程函数定义如下UINT WINAPI WorkThread( LPVOID lpContext ); 应用时可以这样,
CYourDlg dlg;
CreateThread(...,(参数)(LPVOID) &dlg );
在函数里这样写:
CYourDlg* pDlg = ( CYourDlg* ) lpContext;
if ( pDLg )
{
HWND hWnd = pDlg->GetDlgItem( 控件ID );
PostMessage( hWnd, WM_YOURMSG, pstr, 0 );
}
获得句柄,通过GetWindowText( HWND, buffer, len );得到控件内容。可以把父窗口指针作为参数传到线程里来获取句柄。同理,可以通过SetWindowText设置内容。
比如传入的是对话框的指针pDlg,比如你已知ID,那么设置如下:pDlg->GetDlgItem( ID )->SetWindowText("你要设置的东西");
另一种方法是消息处理,自定义消息,然后线程内PostMessage和参数,在你的外部来处理该消息。
补充:
1、HWND hWnd = ( CWnd* )pWnd->GetDlgItem( ID );
2、线程函数定义如下UINT WINAPI WorkThread( LPVOID lpContext ); 应用时可以这样,
CYourDlg dlg;
CreateThread(...,(参数)(LPVOID) &dlg );
在函数里这样写:
CYourDlg* pDlg = ( CYourDlg* ) lpContext;
if ( pDLg )
{
HWND hWnd = pDlg->GetDlgItem( 控件ID );
PostMessage( hWnd, WM_YOURMSG, pstr, 0 );
}
在线程中通过发送消息UpdateData界面
{
UpdateData(wParam);
return 0;
}
- 线程中不能用updatedata()的解决办法
- VC++线程中不能用updatedata()的解决办法
- (转)UpdateData在线程中出错的解决办法
- UpdateData在线程中出错的解决办法 .
- MFC不能用UpdateData的解决方法
- hierarchyviewer不能用的解决办法
- c中数组大小不能用变量的一个解决办法
- Cygwin中ndk-build不能用的解决办法
- 线程中更新窗口不能直接调用UpdateData函数 的解决办法
- 线程中更新窗口不能直接调用UpdateData函数 的解决办法
- 在线程中UpdateData
- 工作线程中UpdateData
- 工作线程中调用UI线程创建的窗口的UpdateData会导致Assert的问题及解决办法.
- 工作线程中调用UI线程创建的窗口的UpdateData会导致Assert的问题及解决办法
- 工作线程中调用UI线程创建的窗口的UpdateData会导致Assert的问题及解决办法(ZZ)
- Ubuntu中ckhconfig不能用了,解决办法
- iis5.1安装(适用于XP) 不能用的解决办法
- WIN + E快捷键不能用的解决办法
- sql server 2000的一点笔记
- vs asp.net web应用程序出错
- 2010年8月13日
- JSP页面出现这样的错误
- U-Boot命令手册
- 线程中不能用updatedata()的解决办法
- MFC类与对应头文件
- 今天看到的 排行榜
- Converting a BMP Image to a PNG Image
- 报表
- 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败
- 线程函数参数(LPVOID Param)
- Weblogic应用程序部署指南
- Python建立Web文件服务