读书人

在DLL中关闭非模式对话框,出现异常

发布时间: 2012-03-03 15:33:03 作者: rapoo

在DLL中关闭非模式对话框,出现错误

启动代码如下
pdlg=new CGprsCommDlg();
pdlg-> Create(IDD_GPRSCOMM_DIALOG,NULL);
pdlg-> ShowWindow(SW_SHOW);

return 0;

关闭代码如下
pdlg-> SendMessage(WM_CLOSE);
//pdlg-> SendMessage(WM_DESTROY);
// DestroyWindow(pdlg-> GetSafeHwnd() );
// delete pdlg;
//pdlg=NULL;
return 0;


用pdlg-> SendMessage(WM_CLOSE); 可以将对话框关闭,但再打开时在create 时出错,用pdlg-> SendMessage(WM_DESTROY); 则整个程序被退出了.这个该如何是好?


[解决办法]

SendMessage(pdlg-> m_hWnd, WM_DESTROY, ........);

delete pdlg;
pdlg=NULL;
return 0;

[解决办法]
你的启动代码和关闭代码是放在哪些函数里面啊?
[解决办法]
pdlg-> Create(IDD_GPRSCOMM_DIALOG,m_MainWnd);

m_mainWnd---> 传一个调用程序的窗口句柄过来试试。
[解决办法]
pdlg-> Create(IDD_GPRSCOMM_DIALOG,CWnd::FromHandle(m_MainWnd));
[解决办法]
pdlg-> Create(IDD_GPRSCOMM_DIALOG,m_MainWnd);

m_mainWnd---> 传一个调用程序的窗口句柄过来试试。

if ( ! ::IsWindow(pdlg-> GetSafeHwnd())
pdlg-> Create(IDD_GPRSCOMM_DIALOG,m_MainWnd);
[解决办法]
在关闭中
pdlg-> SendMessage(WM_CLOSE);
delete pdlg;
pdlg=NULL;
[解决办法]
在DLL接口函数中使用:

AFX_MANAGE_STATE(AfxGetStaticModuleState());


http://www.qqread.com/vc/i720283020_8.html
[解决办法]
DLL非模态对话框
http://topic.csdn.net/t/20060228/17/4583923.html

读书人网 >VC/MFC

热点推荐