mfc 计算机内存不足,MFC多线程学习的简单例子(遇到内存不足问题,尚未解决)...
多线程学习的简单例子(遇到了问题):建立一个基于对话框的工程MultiThread6,在对话框IDD_MULTITHREAD6_DIALOG中加入一个按钮IDC_UI_THREAD,标题为“用户界面多线程学习的简单例子(遇到了问题):建立一个基于对话框的工程MultiThread6,在对话框IDD_MULTITHREAD6_DIALOG中加入一个按钮IDC_UI_THREAD,标题为“用户界面线程
多线程学习的简单例子(遇到了问题):建立一个基于对话框的工程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
但 不使用 为什么提示的是内存不足,,依然没有弄清楚。。。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)