xiaoheilian 发表于 2020-2-4 19:20

MFC dll注入后如何显示非模态对话框?



创建MFC dll后xxxApp的类就是入口类了,我的非模态框类是成员变量
BOOL CMFCLibrary7App::InitInstance()函数是xxxApp类的初始化函数,我在这函数里面
mdlg->Create(IDD_DIALOG1);
mdlg->ShowWindow(SW_SHOWNORMAL);
显示我的非模态框。
当我将完成的dll注入到进程后,非模态框只是一闪而过,请问这是怎么回事?
我使用AfxBeginThread()函数新建线程来调用
mdlg->Create(IDD_DIALOG1);
mdlg->ShowWindow(SW_SHOWNORMAL);
会导致被注入进程卡死。

cdj68765 发表于 2020-2-4 19:44

本帖最后由 cdj68765 于 2020-2-4 19:47 编辑

如果我的经验没错的话,一闪而过是因为线程运行到了return所以退出了,你需要用一个死循环不让线程退出。当然错了的话当我没说

xiaoheilian 发表于 2020-2-4 20:02

本帖最后由 xiaoheilian 于 2020-2-4 20:04 编辑

cdj68765 发表于 2020-2-4 19:44
如果我的经验没错的话,一闪而过是因为线程运行到了return所以退出了,你需要用一个死循环不让线程退出。当 ...
我在mdlg->ShowWindow(SW_SHOWNORMAL);
后面加入了死循环
while(true){
}
但是弹出来的非模态框会卡死
之前我已经试过在
InitInstance()函数里面加入
while(true){
mdlg->Create(IDD_DIALOG1);
mdlg->ShowWindow(SW_SHOWNORMAL);
}
都会造成非模态框卡死

nstar1221 发表于 2020-2-4 20:24

被释放了?

SherryMefum 发表于 2020-2-4 20:43

大看雪专家人士多。

xiaoheilian 发表于 2020-2-4 23:52

nstar1221 发表于 2020-2-4 20:24
被释放了?

我觉得应该是被释放了,可是刚写mfc dll,不太明白如何维持

nstar1221 发表于 2020-2-5 05:59

xiaoheilian 发表于 2020-2-4 23:52
我觉得应该是被释放了,可是刚写mfc dll,不太明白如何维持

在框架对象中创建一个成员变量试试

xiaoheilian 发表于 2020-2-5 14:30

nstar1221 发表于 2020-2-5 05:59
在框架对象中创建一个成员变量试试

我的非模块框类是框架对象的成员变量
页: [1]
查看完整版本: MFC dll注入后如何显示非模态对话框?