CWinThread::m_pMainWnd

CWinThread::m_pMainWnd

Remarks

Use this data member to store a pointer to your thread’s main window object. The Microsoft Foundation Class Library will automatically terminate your thread when the window referred to by m_pMainWnd is closed. If this thread is the primary thread for an application, the application will also be terminated. If this data member is NULL, the main window for the application’s CWinApp object will be used to determine when to terminate the thread. m_pMainWnd is a public variable of type CWnd*.

Typically, you set this member variable when you override InitInstance. In a worker thread, the value of this data member is inherited from its parent thread.

     forlike:

BOOL CSheetTestApp::InitInstance()
{

..................................//去除模态窗口的创建,自己添加非模态窗口

CSheetTestDlg *p=new CSheetTestDlg();
m_pMainWnd=p;
p->Create(IDD_SHEETTEST_DIALOG);
p->ShowWindow(SW_HIDE);
     return TRUE;

}

     用该成员变量去存储你的线程主窗口对象。当和m_pMainWnd 相关的窗口被关闭后,MFC会自动终止你的线程。如果该线程是应用程序主线程,程序也将会被终止。如果该数据成员为NULL,应用程序CWinApp对象的主窗口将用来决定什么时候去终止线程。m_pMainWnd是一个CWnd*类型的public变量。
     很明显,你需要在重载InitInstance时为m_pMainWnd赋值。在工作线程中,m_pMainWnd自动继承其父线程的值。





补充:只有CWinThread对象才有m_pMainWnd
class CWinThread : public CCmdTarget
{
    DECLARE_DYNAMIC(CWinThread)

public:
// Constructors
    CWinThread();
    BOOL CreateThread(DWORD dwCreateFlags = 0, UINT nStackSize = 0,
        LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);

// Attributes
    CWnd* m_pMainWnd;       // main window (usually same AfxGetApp()->m_pMainWnd)
    CWnd* m_pActiveWnd;     // active main window (may not be m_pMainWnd)
    BOOL m_bAutoDelete;     // enables 'delete this' after thread termination
   ..............
}


   //在用户界面线程中创建非模态对话框
    if (!pDlg.Create(IDD_DIALOG1, NULL))
    {
        AfxMessageBox("窗口创建失败!");
    }
    else
    {
        pDlg.ShowWindow(SW_SHOW);
        m_pMainWnd=&pDlg;
    }

    在创建用户界面线程时,该句一定要加上。否则在线程不会得到释放

 

 

转载自:http://hi.baidu.com/hj11yc/item/8c9232094968e33d4ac4a388

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值