怎样利用AfxBeginThread函数以动态运行方式去启动一个线程类

来源:百度知道 编辑:UC知道 时间:2024/04/30 12:06:14
启动用户界面线程:
利用AfxBeginThread函数以动态运行方式启动CDialogThread。

其中CDialogThread是创建用户界面线程类。
具体点,Thanks啦!
谢谢啦,我做出来了,虽然不是你那样,但还是谢谢你!
应该是:AfxBeginThread(RUNTIME_CLASS(CDialogThread),THREAD_PRIORITY_NORMAL, 0, 0, NULL);就OK了!

如果CDialogThread里面是对话框的话,要有消息环的处理,这样会比较麻烦。CDialogThread的内容就像用SDK方法的主程序一样。
我建议你用CWinThread的派生class.我刚才敲了一个小程序,你改一改就能用了。很短。一个对话框,按一下按钮后,用另一个线程启动CAboutDlg对话框。
-----------------------------------

class CTestThread : public CWinThread
{
public:
virtual BOOL InitInstance();
DECLARE_MESSAGE_MAP()
};

BEGIN_MESSAGE_MAP(CTestThread, CWinThread)
//{{AFX_MSG_MAP(CExexexcApp)
// メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。
// この位置に生成されるコードを编集しないでください。
//}}AFX_MSG
END_MESSAGE_MAP()

BOOL CTestThread::InitInstance()
{
AfxEnableControlContainer();

CAboutDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
return FALSE;
}

CTestThread* pThread;
void CExexexcDlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
pThread = new CTestThread();
pThread->InitInstance();
delete pThread;
}