对话框一闪而过(dll中的对话框)

seujh 2011-08-11 10:56:59
规则dll中提供了一个导出函数,这个函数的具体代码如下:

void f()
{
CXXDialog* pDlg=new CXXDialog();
pDlg->Create(IDD_VTS_DIALOG,NULL)l;
pDlg->Show(SW_SHOW);
}

然后重载了 对话框的PostNcDestroy函数, 这样带来一个麻烦问题。。。。。


就是当exe去加载dll, 调用这个函数的时候, 函数立即创建一个非模式对话框,但是对话框一闪就没有了。。。

我的这个dll中的对话框必须用非模式的, 怎么防止一闪而过啊????

救命啊
...全文
162 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
seujh 2011-08-13
  • 打赏
  • 举报
回复
dll的导出类中 ,应该加个对话框指针成员变量,然后new一下,(有机会做个试验),看会不会闪。


如果还是会闪,。那么加消息循环




seujh 2011-08-13
  • 打赏
  • 举报
回复
结贴:

做个总结啊

基于多文档,单文档的, 可以在View类中加一个 CXXDlg* pdlg;

全局的,这样就不会闪了


如果程序本身就是基于对话框,在App中,一旦new了对话框,不管是全局,还是局部,一闪而过。。(除非加消息循环)


感谢各位

说的不对,希望再回帖中跟正
lazy_2010 2011-08-13
  • 打赏
  • 举报
回复
自己处理消息循环
lazy_2010 2011-08-13
  • 打赏
  • 举报
回复
没有,你必须自己出来消息循环的问题
seujh 2011-08-13
  • 打赏
  • 举报
回复
基于mfc 的dll也没有吗?


[Quote=引用 4 楼 kuyucman 的回复:]

MFC框架中添加自然是利用了MFC提供的消息循环,而DLL中创建非模态对话框是没有消息循环的
[/Quote]
东莞某某某 2011-08-13
  • 打赏
  • 举报
回复
MFC框架中添加自然是利用了MFC提供的消息循环,而DLL中创建非模态对话框是没有消息循环的
seujh 2011-08-13
  • 打赏
  • 举报
回复
我是在堆中中创建的啊


当然这个pDlg一旦走完函数就挂了。。。

如果想不让它一闪而过,那么可以加:

MSG msg;


while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

为什么不加会一闪而过,加了之后,不会闪啊??

求原因。。。。。。。。



[Quote=引用 2 楼 c_losed 的回复:]

CXXDialog* pDlg定义为类成员变量
因为作用域问题 函数走完你的pDlg就失效鸟
所以会出现一闪而过的情况
[/Quote]
c_losed 2011-08-13
  • 打赏
  • 举报
回复
CXXDialog* pDlg定义为类成员变量
因为作用域问题 函数走完你的pDlg就失效鸟
所以会出现一闪而过的情况
seujh 2011-08-13
  • 打赏
  • 举报
回复
木有人啊

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧