首页
社区
课程
招聘
[求助]注入dll后创建对话框(DoModal),主程序失去响应。
发表于: 2008-9-2 22:13 7869

[求助]注入dll后创建对话框(DoModal),主程序失去响应。

2008-9-2 22:13
7869
dll工程是:创建动态连接库使用共享MFC DLL

BOOL CLearnApp::InitInstance()
{       
                ::AfxBeginThread((AFX_THREADPROC)Create, 0);
        return CWinApp::InitInstance();
}

这样的话当调用LoadLibrary后程序变成未相应。不知道是为何?

上网搜了很久资料,好像是消息无法被正确传递回主程序导致的,不知能够如何解决?

请高手赐教!

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 1946
活跃值: (263)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
2
换成CreateThread试试
2008-9-3 00:20
0
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
_beginthread()也不行。
现在窗口掉出来了,并且新建立的窗口有反映,但是源程序却没有反映了(估计是没收到消息)
2008-9-3 00:44
0
雪    币: 1946
活跃值: (263)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
4
要么用SDK创建窗口,要么把MFC窗口放到主线程,并且不要用DoModal创建窗口。
2008-9-3 01:00
0
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
厄。这方面我很菜鸟,能否简略解释一下方便我去查资料?

1。要么用SDK创建窗口
什么SDK? WINAPI还是MFC还是别的?

2.要么把MFC窗口放到主线程
我是LoadLibraryA不知窗口在不在主线程?按照我的理解是的阿。

3。并且不要用DoModal创建窗口。
你指的是不是用非模态对话框?

我又个想法不知行不行,用CreateWindow创建一个窗口,然后利用这个窗口的消息循环,不知可不可行,正在尝试中。

还请赐教!
2008-9-3 01:06
0
雪    币: 425
活跃值: (205)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
CWnd *pCWnd = CWnd::GetForegroundWindow();
                        pmyda = new myDialog();
                          pmyda->Create( IDD_DIALOG1 , pCWnd );
                          pmyda->ShowWindow(SW_SHOW);
这样行吗?
2008-9-3 01:31
0
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
7
记得有一条,不要在mfc的dll入口处启动线程。
2008-9-3 09:20
0
雪    币: 7325
活跃值: (3803)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
8
用CreateThread,并且不要去WaitForSingleEvent
2008-9-3 09:24
0
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
谢谢各位高手的回答:)
我马上尝试你们的方法。

之前新建线程的问题我已经解决了(算是吧),我用WIN32写了一个DLL,里面_BEGINTHREAD,新THREAD里面LoadLibrary MFC的DLL。

现在窗口是建立好了,但是之前的程序主窗口的消息似乎被阻塞(不知道这个词用得恰不恰当),只有当关闭新创建的窗口时,之前向主窗口发送的所有消息才立即一起被处理。

网上好像偶很多人遇到跟我一样的问题,但我仍没找到具体一点的解决方法。

不知道各位有什么解决方法?

昨天搞到好晚,今天想了想准备用WIN32写了一个DLL,里面_BEGINTHREAD,Thread函数里面用WinApi Create一个Window,然后隐藏之,接着在LoadLibrary启动MFC的DLL。不知是否可行。

还有一点不懂的就是当主线程调用Loadlibrary后,执行DLLMAIN中代码的线程是主线程还是什么别的线程?
2008-9-3 12:09
0
游客
登录 | 注册 方可回帖
返回
//