VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 535|回复: 6

线程里面创建窗口,窗口没反应

[复制链接]
89_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-18 22:27:51 | 显示全部楼层 |阅读模式
本帖最后由 cxytz01 于 2019-10-19 15:55 编辑

为什么在线程里面创建窗口,红框中的两个函数的顺序调换下会导致窗口不能拖动,这是为什么啊?
线程里面创建窗口,窗口没反应

MFCApplication1.rar

128.61 KB, 下载次数: 3





上一篇:分割窗口后运行总会弹出“new”对话框
下一篇:Do not post the WM_QUIT message using the PostMessage function.
89_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-10-18 22:58:20 | 显示全部楼层
本帖最后由 cxytz01 于 2019-10-19 17:10 编辑

大概知道正确做法应该是这样:
if (!msg.hwnd) pct->SendMessage(msg.message);
else ::DispatchMessage(&msg);
在msdn里关于postthreadmessage的解释是,postthreadmessage发送的message是没有hwnd的,而dispatchMessage对message是需要hwnd的,所以上面if语句是正确的。


但有人知道为什么调换图中两个函数的顺序,窗口就不能移动了吗?
89_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-10-18 23:09:30 | 显示全部楼层
本帖最后由 cxytz01 于 2019-10-18 23:11 编辑

对啦,对啦,这里面的sendmessage换成postmessage也一样。
58_avatar_middle
最佳答案
51 
online_vip 发表于 2019-10-19 13:42:51 | 显示全部楼层
最好是删除工程中数据库文件,将工程打包传上来。
89_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-10-19 15:56:44 | 显示全部楼层
敏敏 发表于 2019-10-19 13:42
最好是删除工程中数据库文件,将工程打包传上来。


上传了,关键代码在ThreadProc函数。
代码的功能是两个对话框,一个在主对话框点击按钮,会调用postthreadmessage到另一个线程的对话框。
58_avatar_middle
最佳答案
51 
online_vip 发表于 2019-10-19 16:18:19 | 显示全部楼层
cxytz01 发表于 2019-10-19 15:56
上传了,关键代码在ThreadProc函数。
代码的功能是两个对话框,一个在主对话框点击按钮,会调用postth ...

@丧德·彪夫斯基 @SummerGull
89_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-21 16:54:56 | 显示全部楼层
既然你用的mfc窗口类,你应该吧消息处理放在CThreadDlg的windowproc里面,处理消息!
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-5-11 22:05

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表