15,471
社区成员
发帖
与我相关
我的任务
分享
#include <list>
#include "DlgPrompt.h"
class CUIThread : public CWinThread
{
...//MFC生成的代码略
public:
void AddMsgDlg();
void DelMsgDlg(CDlgPrompt* pDlg);
protected:
std::list<CDlgPrompt*> m_listDlg;
void CUIThread::AddMsgDlg()
{
CDlgPrompt* pDlg = new CDlgPrompt();
pDlg->Create(CDlgPrompt::IDD);
if (pDlg->GetSafeHwnd())
{
m_listDlg.push_back(pDlg);
}
}
void CUIThread::DelMsgDlg(CDlgPrompt* pDlg)
{
std::list<CDlgPrompt*>::iterator itDlg;
for (itDlg = m_listDlg.begin(); itDlg != m_listDlg.end(); itDlg++)
{
if (*itDlg == pDlg)
{
if (NULL != pDlg && pDlg->GetSafeHwnd())
{
pDlg->DestroyWindow();
}
delete pDlg;
m_listDlg.erase(itDlg);
break;
}
}
}
BOOL CUIThread::InitInstance()
{
// TODO: perform and per-thread initialization here
m_pParentWnd = new CDlgPrompt();
m_pParentWnd->Create(CDlgPrompt::IDD);
return TRUE;
}
int CUIThread::ExitInstance()
{
// TODO: perform any per-thread cleanup here
if (m_pParentWnd)
{
if (m_pParentWnd->GetSafeHwnd())
{
m_pParentWnd->DestroyWindow();
}
delete m_pParentWnd;
}
return CWinThread::ExitInstance();
}
void CUIThread::AddMsgDlg()
{
if (0 == wParam)
{
return 0;
}
CString* pStrMsg = reinterpret_cast<CString*>(wParam);
CDlgPrompt* pDlg = new CDlgPrompt(*pStrMsg,m_pParentWnd);
pDlg->Create(CDlgPrompt::IDD,m_pParentWnd);
....
}
if (!PostThreadMessage(m_threadID,WM_DEL_MSGDLG,(WPARAM)this,0))
{
ShowWindow(SW_HIDE);
}