MFC中关于非模态窗口在子线程中的创建与销毁

    因为一个项目中需要开辟一个工作线程进行运算,但是在这个线程中我需要在弹出一个非模态窗口

    一开始我是直接在子线程中Creat一个窗口出来的,结果也是可行的。但是今天早上发现不行了,creat这一步执行的时候就会报错。然后我找了一大圈资料,有人说子线程中不能创建(事实证明这是错的),要用sendmessage去传递消息出来,在主线程中创建。然后又差了一堆博客,有两个写得不错,虽然内容一模一样:

https://www.cnblogs.com/ahuo/archive/2013/01/28/2879406.html

https://blog.csdn.net/software_520/article/details/1802699?locationNum=1

我用的是VS2013,这两可能用的是VC++6.0,有个地方会有问题。

afx_msg void OnCreateDlg(WPARAM,LPARAM);//消息函数声明
afx_msg void OnDeleteDlg(WPARAM,LPARAM);//这里void VS2013有错误,需要改成LRESULT

    正当我满心欢喜准备实现一下,实现到一半的时候,发现原来要弹出的Dialog在资源视图里面找不到了,对,是找不到了!!!然后我看了下,对应类和.h和.cpp都在,瞬间奔溃,如果这不是一个简单的窗口上面没啥东西,估计当时我能把实验室电脑砸了,然后和老板说不干了,谁爱干谁干。对MFC是没有爱了,除了这个,之前又多次.rc文件内部损坏,导致资源文件打不开,所以长期保存.rc副本。

    所以,最后我是新建了对话框,然后在添加了类,就解决了。不过现在感觉还是通过消息传递更加合理!

 

展开阅读全文

没有更多推荐了,返回首页