VC++6.0线程中创建非模态对话框体会

原创 2007年09月27日 10:44:00

       关于 线程中创建非模态对话框 我试了很多方法,但是结果都是令人失望没有成功。但是经过我不懈的尝试终于找到了一个自己的方法,我不知道是否是标准的方法。估计有很多人都遇到过  线程中创建非模态对话框  的难题,所以我把我的方法拿出来供大家共同学习交流之用。

主要以下方法针对基于对话框的程序。

#define  UM_CREATE_DLG   WM_USER+105 //创建对话框的消息
#define  UM_DELETE_DLG   WM_USER+106  //销毁对话框的消息

afx_msg void OnCreateDlg(WPARAM,LPARAM);//消息函数声明
afx_msg void OnDeleteDlg(WPARAM,LPARAM);

ON_MESSAGE(UM_CREATE_DLG,OnCreateDlg)//消息映射
ON_MESSAGE(UM_DELETE_DLG,OnDeleteDlg)

void CLANCommunionDlg::OnCreateDlg(WPARAM wParam,LPARAM lParam )
{
 CTransportInfoDlg* p=(CTransportInfoDlg*)wParam;  //CTransportInfoDlg为非模态对话框类
 p->Create(IDD_TRANSPORTINFO_DLG,this);  //IDD_TRANSPORTINFO_DLG为非模态对话框资源ID
 p->ShowWindow(SW_SHOW); 
}

void CLANCommunionDlg::OnDeleteDlg(WPARAM wParam,LPARAM lParam )
{
 CTransportInfoDlg* p=(CTransportInfoDlg*)wParam;
 p->DestroyWindow( );
 p=NULL;

//注意在非模态对话框类中添加  PostNcDestroy()函数,并在其中添加  Delete  This;

/*即

void CTransportInfoDlg::PostNcDestroy()
{
 // TODO: Add your specialized code here and/or call the base class 
 delete this;
}

*/  
 }

UNIT    WorkThread(LPVOID    param)

{

CWnd*    pParent=主对话框类;

CTransportInfoDlg* pDialog=new CTransportInfoDlg();

pParent->SendMessage(UM_CREATE_DLG,(WPARAM)pDialog);

//做你要做的事情。

pParent->SendMessage(UM_DELETE_DLG,(WPARAM)pDialog);

}

相关文章推荐

VC++ 非模态对话框

声明:本人一个菜鸟,网上搜罗了很多关于VC++编程的资料,可每本资料都是涵盖面太广,难以细致。英语又太烂,所以不得意只得摸索,恐又忘记所以记在此处,若有不对的地方,烦劳指出,不胜感激。 author...
  • fym0121
  • fym0121
  • 2012年05月04日 21:57
  • 4140

模态/非模态对话框的生&死 VC++中subclassdlgitem函数的功能及用法

以下为调试过程中的代码片段: ----------------------------------------------------------->>>> // 模态 CDialog::DoM...

VC非模态对话框创建和销毁

VC非模态对话框创建和销毁 非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文: When   you   implement   ...

转:VC非模态对话框创建和销毁

非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文:When   you   implement   a   modeless   dialog   bo...
  • tompaz
  • tompaz
  • 2011年05月13日 16:09
  • 576

VC非模态对话框创建和销毁

article copy from: http://blog.csdn.net/nolatestudy/article/details/7003891 =======================...

VC非模态对话框创建和销毁

非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文: When   you   implement   a   modeless   dia...
  • mail_cm
  • mail_cm
  • 2012年05月08日 09:34
  • 409

VC非模态对话框创建和销毁

非模态(Modeless)对话框,又叫做无模式对话框,当用户打开非模态对话框时,依然可以操作其他窗口。 非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSD...

VC/MFC非模态对话框实例

以下实例是基于对话框的工程,实现两个按钮分别控制两个非模态对话框,且保证每个非模态对话框只存在一个实例。 1、新建一个基于对话框(Dialog Based)工程,名称为Demo 2、在主窗口上添加...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC++6.0线程中创建非模态对话框体会
举报原因:
原因补充:

(最多只允许输入30个字)