首页
社区
课程
招聘
[求助]从DLL中导出非模态对话框的问题
发表于: 2008-6-24 13:12 7675

[求助]从DLL中导出非模态对话框的问题

2008-6-24 13:12
7675
怎样从一个DLL中导出非模态对话框?
我主要是把此DLL远程注射到别的进程然后显示对话框
下面是我的代码

void ShowDialog()
{

CallTestDll*   pDlg   =   new CallTestDll;      
        pDlg->Create(IDD_DLG_KCTEST,0);
        pDlg->ShowWindow(SW_NORMAL);
        HWND   hDlgModeless   =   pDlg->GetSafeHwnd();
        pDlg->ShowWindow(SW_SHOW);
        MSG     msg;
        while(GetMessage(&msg,NULL,0,0))

        {

                if   (hDlgModeless==0||!IsDialogMessage(hDlgModeless,&msg))

                {
                        if (msg.hwnd==hDlgModeless)
                        {
                                TranslateMessage(&msg);
                                DispatchMessage(&msg);
                        }

                }
        }

}

如果没有消息循环,对话框一闪而过(不是资源问题)

如果加了消息循环后,对话框可以出现,但是进程的主窗口有点死,而且结束了对话框后主窗口还是那个样,好像线程有死锁。
帮助一下小弟,谢谢!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主,我也是这个情况,你解决没有??
2017-5-30 22:50
0
雪    币: 7248
活跃值: (5078)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
不是窗口死了,是因为窗口没响应到消息,所以没处理消息就没反应.
很久没弄MFC了,我记得那时候我的处理方式是从消息回调函数那里拦截消息,一个一个处理的.
具体实现代码,没有了.
2017-5-31 08:14
0
雪    币: 12848
活跃值: (9108)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
4
你需要截获主线程的运行时机,在主线程里创建窗口
消息钩子啊  定时器啊  inlinehook  什么的都可以
2017-5-31 08:48
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有点深奥
2017-5-31 12:03
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
http://bbs.pediy.com/thread-218201.htm
2017-6-4 21:19
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你的show函数相当于是在进程的主线程里调用的,一直循环不反回,  所以会卡主进程主窗口,  会死.
2017-6-4 21:22
0
游客
登录 | 注册 方可回帖
返回
//