shamantou blog site

shamantou@gmail.com

导航

使用CWinThread建立自己的线程类
创建自己的UI线程类,管理dlg对话框

#include "dlg.h"

// CUIThread

class CUIThread : public CWinThread
{
DECLARE_DYNCREATE(CUIThread)

protected:
CUIThread(); // protected constructor used by dynamic creation
virtual ~CUIThread();

public:
virtual BOOL InitInstance();
virtual int ExitInstance();
CDlg dlg;
protected:
DECLARE_MESSAGE_MAP()
afx_msg void OnAsk(UINT wParam,LONG lParam);
public:
virtual int Run();
};




。pp文件

BOOL CUIThread::InitInstance()
{
// TODO: perform and per-thread initialization here

this->m_pMainWnd=&dlg;

dlg.DoModal();

//dlg->Create( IDD_DIALOG2, NULL );
//dlg->ShowWindow(SW_SHOW);



return TRUE;
}



BEGIN_MESSAGE_MAP(CUIThread, CWinThread)
ON_THREAD_MESSAGE(WM_ASK,OnAsk)
END_MESSAGE_MAP()



//在创建的时候需要做的修改

void CddDlg::OnUI()
{

p=
(CUIThread *)
AfxBeginThread(RUNTIME_CLASS(CUIThread));

//p->CreateThread(0,0,0);
// p->InitInstance();


}

void CddDlg::OnBnClickedSenduimsg()
{

p->PostThreadMessage(WM_ASK,0,0);

}



注意,此处使用了

CUIThread *pthread=(CUIThread *)AfxBeginThread(RUNTIME_CLASS(CUIThread));

对该线程发送消息则使用了pthread->PostThreadMessage(WM_ASK,0,0);

在该UI线程中,使用ON_THREAD_MESSAGE(WM_MY_MSG,OnMyProcess) 进行消息映射


dd.rar
例子下载




<< 如何手动添加消息响应Autodesk的实习 >>

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

Powered By Z-Blog 1.8 Arwen Build 81206 Copyright 2006-2009 | ooplab.org | shamantou@gmail.com | 沪ICP备08011244号 | Some Rights Reserved.