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函数

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

MFC下多线程UpdateData的使用方法

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

MFC中Invalidate(); 和UpdateWindow();的用法

1. Invalidate()是强制系统进行重画,但是不一定就马上进行重画。因为Invalidate()只是通知系统,此 时的窗口已经变为无效。强制系统调用WM_PAINT,而这个消息只是Post就是...

MFC中用户界面元素更新原理(UPDATE_COMMAND_UI)

大家在编程的过程中一定遇到过这种情况: 需要根据某个变量的值来设定菜单项是否被选中,设置工具栏按钮是否被按下或者在状态栏中显示一些信息。 MFC提供了一种机制来帮助我们完成这项工作:    只要...

mfc中UpdateData的用法

UpdateData(TRUE) ——刷新控件的值到对应的变量。(外部输入值交给内部变量) 即:控件的值—>变量。 UpdateData(FALSE) —— 拷贝变量值到控件显示。(变量的最终运算结果...

MFC下多线程UpdateData的使用方法

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

VC/MFC 程序最小化后不能还原的原因与解决方法

程序最小化后不能还原,一般原因是程序中至少存在一个Popup类型的窗口引起的,因为Popup类型的子窗口即使由于父窗口的隐藏而隐藏,其WS_VISIBLE属性仍然是可见的,当用户再次点击任务栏的程序图...

MFC获取编辑框内容以及UpdateData方法

编程中多次用到获取界面中编辑框中的内容。关于编辑框还有一些其他的问题:如UpdateData(TRUE),函数参数为TRUE或FALSE的含义,以及编辑框关联值变量(CString)以及控件变量(Ed...
  • shufac
  • shufac
  • 2014-04-27 01:11
  • 3725

VC/MFC 程序最小化后不能还原的原因与解决方法

本文转自:http://blog.sina.com.cn/s/blog_4b44e1c00100mdkl.html程序最小化后不能还原,一般原因是程序中至少存在一个Popup类型的窗口引起的,因为Po...

VC/MFC 程序最小化后不能还原的原因与解决方法

程序最小化后不能还原,一般原因是程序中至少存在一个Popup类型的窗口引起的,因为Popup类型的子窗口即使由于父窗口的隐藏而隐藏,其WS_VISIBLE属性仍然是可见的,当用户再次点击任务栏的程序图...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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