MFC 简单的线程对话框问题

我想问下,在UI线程中new创造非模态对话框后,关闭线程对话框为什么也关闭了呢?是不是在别的地方调用postquitMessage();参数是该线程的wdExitCode... 我想问下,在UI线程中new创造非模态对话框后,关闭线程对话框为什么也关闭了呢?
是不是在别的地方调用postquitMessage();参数是该线程的wdExitCode就行了,在启动他的线程函数中行吗?
void mythread()
{
pThread = AfxBeginThread(RUNTIME_CLASS(CMyThread));
::PostQuitMessage(wd_MyExitCode);

}
回 arbies
我关闭的是创造非模态对话框的线程,对话框也会关闭吗?
是不是虽然关闭了,但是还没有销毁要发送wm_close才会销毁
回 arbies
就是说在线程中创建的东西如果结束线程都会关闭吗?
对话框销毁了吗?
展开
 我来答
俊美且平实丶焰火H
2008-08-26 · 超过14用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
每个窗口都有个属性:线程ID,你可以用Spy++看到窗口对应的线程ID
那么当这个线程被结束了,显然窗口就没有存在的基础了
如果线程被强制结束,这是不健康的,建议不要这样
wm_close应该没有被执行
你可以看看你的非模态对话框对应的线程ID是不是跟你关闭的线程ID一样

如果要验证窗口是不是被销毁了,你可以使用Spy++这个工具,他可以枚举进程下的窗口,自己看看就知道了
Spy++是visual studio的一个工具
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
arbies
2008-08-26 · TA获得超过442个赞
知道小有建树答主
回答量:398
采纳率:0%
帮助的人:551万
展开全部
我已经讲过了,线程中分配其实跟一般函数分配没什么区别,窗口消失的关键是窗口的依赖关系,即父窗口关了,其所有的子窗口都将关闭。
另外,如果main/winmain函数结束了,程序也就运行完毕,所有数据都将被清除,包括窗口。

你要检查的是这两个地方,而不是线不线程的问题。

不再修改回复。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
polang1988
2008-08-26 · TA获得超过171个赞
知道答主
回答量:100
采纳率:0%
帮助的人:110万
展开全部
在UI线程中new创造非模态对话框,你用的什么变量保存这个新创建的非模态对话框,要使用非模态对话框,应该用一个全局的变量,你在线程中的变量只是局部变量,线程运行完了,变量就会销毁,当然对话框也就销毁了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式