多线程学习的简单例子(遇到了问题):建立一个基于对话框的工程MultiThread6,在对话框IDD_MULTITHREAD6_DIALOG中加入一个按钮IDC_UI_THREAD,标题为“用户界面

多线程学习的简单例子(遇到了问题):

建立一个基于对话框的工程MultiThread6,在对话框IDD_MULTITHREAD6_DIALOG中加入一个按钮IDC_UI_THREAD,标题为“用户界面线程”

右击工程并选中“NewClass…”为工程添加基类为CWinThread派生线程类CUIThread。

给工程添加新对话框IDD_UITHREADDLG,标题为“线程对话框”。

为对话框IDD_UITHREADDLG创建一个基于CDialog的类CUIThreadDlg。使用ClassWizard为CUIThreadDlg类添加WM_LBUTTONDOWN消息的处理函数OnLButtonDown,如下:voidCUIThreadDlg::OnLButtonDown(UINT nFlags, CPoint point)

{

AfxMessageBox("YouClicked The Left Button!");

CDialog::OnLButtonDown(nFlags,point);

}

在UIThread.h中添加#include"UIThreadDlg.h"

并在CUIThread类中添加protected变量CUIThreadDlg m_dlg:class CUIThread : publicCWinThread

{

DECLARE_DYNCREATE(CUIThread)

protected:

CUIThread();           // protected constructor used bydynamic creation

// Attributes

public:

// Operations

public:

// Overrides

//ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CUIThread)

public:

virtualBOOL InitInstance();

virtualint ExitInstance();

//}}AFX_VIRTUAL

// Implementation

protected:

CUIThreadDlgm_dlg;

virtual~CUIThread();

//Generated message map functions

//{{AFX_MSG(CUIThread)

//NOTE - the ClassWizard will add and remove member functions here.

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

分别重载InitInstance()函数和ExitInstance()函数:BOOL CUIThread::InitInstance()

{

m_dlg.Create(IDD_UITHREADDLG);

m_dlg.ShowWindow(SW_SHOW);

m_pMainWnd=&m_dlg;

returnTRUE;

}

int CUIThread::ExitInstance()

{

m_dlg.DestroyWindow();

returnCWinThread::ExitInstance();

}

双击按钮IDC_UI_THREAD,添加消息响应函数:voidCMultiThread6Dlg::OnUiThread()

{

CWinThread*pThread=AfxBeginThread(RUNTIME_CLASS(CUIThread));

}

并在MultiThread6Dlg.cpp的开头添加:#include"UIThread.h"

好了,编译并运行程序吧。每单击一次“用户界面线程”按钮,都会弹出一个线程对话框,在任何一个线程对话框内按下鼠标左键,都会弹出一个消息框。

弹出的对话框是:  内存不足!

很奇怪,目前没找到原因。。。

CWinThread*pThread=AfxBeginThread(RUNTIME_CLASS(CUIThread));换成

CUIThread* pThread=new CUIThread();

pThread->CreateThread();

问题解决。。。

另一个解决办法是

使用DECLARE_DYNCREATE

但 不使用 为什么提示的是内存不足,,依然没有弄清楚。。。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐