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

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

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

#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);

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值