MFC C++ 在回调函数中编辑 Windows 控件
Posted
技术标签:
【中文标题】MFC C++ 在回调函数中编辑 Windows 控件【英文标题】:MFC C++ Edit Windows Controls in Callback Function 【发布时间】:2013-05-16 16:18:41 【问题描述】:我在项目的这一部分卡住了。 我有一个下载对话框,当您双击列表控件时。 我动态创建它,它使用指向处理 FTP 下载/上传过程的类的静态指针。
这里一切都很好。
每个下载过程都使用这个类中的一个线程。我发布一个静态回调函数(线程函数不接受非静态函数)
但我想在这个回调函数中编辑我的 Windows 控件我该怎么办?
提前致谢。
【问题讨论】:
【参考方案1】:将参数传递给您的线程,即对话框的m_hWnd
。然后在线程完成工作后使用PostMessage
向对话框类发送消息以处理其控件的更新。
【讨论】:
是的,将对话框作为参数传递就可以了。我没有这样做,因为我不想弄乱代码。我想没有其他选择。所以我选择这个作为 Anwswer。谢谢!跨度> 【参考方案2】:查看使用 PostMessage 技术的示例:
http://vcfaq.mvps.org/mfc/12.htm
【讨论】:
我将“this”指针传递给我的函数。我可以编辑一些公共字符串变量等。但我不能使用指向对话框的指针来更改控件,如 MyDlg->blaleditbox1.SetWindowTextA("blabla ");但是一些公共变量效果很好。实际上我不想使用 PostMessage func。因为它使我的代码不可读 @h3x0r 出于线程安全的原因,MFC 不允许您访问在另一个线程中创建的窗口(如编辑控件)。所以 PostMessage 技术是必要的。以上是关于MFC C++ 在回调函数中编辑 Windows 控件的主要内容,如果未能解决你的问题,请参考以下文章