MFC updatedata在线程中不能应用的解决方法

原创 2013年10月23日 10:30:44

查过好多方法,以下是我采取的可以实现的方法:

1.//定义用户消息,不可与系统消息冲突,所以就这样定义  
  //WM+USER表示用户消息,加100还是加其他值并没多大区别的  
#define WM_MYUPDATEDATA WM_USER+100  

2.关联自定义消息:

在BEGIN_MESSAGE_MAP添加消息映射:

 ON_MESSAGE(WM_UPDATEDATA, OnUpdateData)

3.定义消息处理函数:LRESULT CDlg::OnUpdateData(WPARAM wParam, LPARAM lParam)
{
 UpdateData(wParam);
 return 1;

} 4.在线程中发送消息:    

首先获取主窗口的指针     CDlg* pdlg = (CDlg*)dlg;    

SendMessage(pdlg ->m_hWnd, WM_UPDATEDATA, FALSE, FALSE); 

如果采用以上的sendmessage,会提示说"error C2660: “CWnd::SendMessageA”: 函数不接受 4 个参数"

如果删除SendMessage中的一个参数,则会提示说“error C2664: “CWnd::SendMessageA”: 不能将参数 1 从“HWND”转换为“UINT””。怎么改正都不对,后来在同学的帮助下,采用以下方法。

改正方法如下:

pDlg->SendMessage(WM_MYUPDATEDATA, FALSE,FALSE);

完成,该方法可以解决在线程中直接调用UpdateData产生错误的问题.


也就是说在写完第1、2、3步后,在线程中需要updatedata(false)或者updatedata(true)的时候,都能用上面的sendmessage来代替,一句话搞定。

MFC下多线程UpdateData的使用方法

1.定义消息 2.关联消息 3.声明函数 4.实现函数 5.在线程内发送消息
  • zfpnuc
  • zfpnuc
  • 2010年10月15日 21:43
  • 4809

MFC中跨线程UpdateData(FALSE)报错 ASSERT FAILD问题

文章来自:http://hi.baidu.com/yu_xiyan/item/27f82bf1a1cc0813d7ff8c8c MFC程序,在给控件关联的变量赋值后,需要调用UpdateData(F...
  • txk15619567977
  • txk15619567977
  • 2014年01月03日 11:21
  • 2086

线程中更新窗口不能直接调用UpdateData函数

问题:在线程中使用UpdateData(FALSE)来更新窗口的内容,结果在Debug版本下面就出现了Assert报错.解决方案:UpdateData(FALSE)语句用SendMessage(WM_...
  • mapping_ping
  • mapping_ping
  • 2007年08月16日 16:11
  • 1918

MFC下多线程UpdateData的使用方法

在randomDlg.h  //定义用户消息,不可与系统消息冲突,所以就这样定义   //WM+USER表示用户消息,加100还是加其他值并没多大区别的   #define WM_M...
  • superbfly
  • superbfly
  • 2014年01月15日 17:42
  • 1244

线程中使用UpdateData出错解决方法

原文链接:http://www.cnblogs.com/lebronjames/archive/2011/02/16/1956029.html 最近写一个程序,需要在自己创建...
  • saiolive
  • saiolive
  • 2016年05月19日 15:05
  • 1564

MFC:线程中更新窗口不能直接调用UpdateData函数

线程中更新窗口不能直接调用UpdateData函数 问题: 在线程中使用UpdateData(FALSE)来更新窗口的内容,结果在Debug版本下面就出现了Assert报错. 解决方案: ...
  • bhj5787
  • bhj5787
  • 2014年05月28日 17:29
  • 973

MFC下多线程UpdateData的使用方法

本文转载于http://blog.pfan.cn/yuqiexing/52543.html 线程中是不可以调用父窗口的UpdateData,原因如下:   当创建窗口的线程和Up...
  • l0g1n
  • l0g1n
  • 2012年10月11日 14:38
  • 1944

VC++线程中不能用updatedata()的解决办法

本文转自http://hi.baidu.com/xiaoqiangswust/item/f9ea3c8f296d9bdf5f0ec1e7 线程中不能用updatedata()的解决办法 用...
  • daoyue
  • daoyue
  • 2013年06月26日 09:44
  • 742

CWND和HWND之间的关系和转换 和获取方法

CWnd与HWND的区别  (2014-04-02 15:08:40) 转载▼ 标签:  cwnd   hwnd   mfc   fromhandle   getsafehand...
  • Alexander_Frank
  • Alexander_Frank
  • 2016年08月02日 14:35
  • 2868

不能将参数1从“const char []”转换为“LPCTSTR

今天在使用vs2008+MFC时候,使用editControl的replacesel(“”)发生报错。 如下::不能将参数1从“const char []”转换为“LPCTSTR” 其解决...
  • heathyhuhu
  • heathyhuhu
  • 2013年12月26日 22:30
  • 7171
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC updatedata在线程中不能应用的解决方法
举报原因:
原因补充:

(最多只允许输入30个字)