今天刚开始学线程,按书上的代码写了一个小程序
从CWinThrerad中继承了一个类
//MyThread.h文件
class CMyThread : public CWinThread
{
DECLARE_DYNAMIC(CMyThread); //这一句是我加的
public:
CMyThread();
virtual ~CMyThread();
BOOL InitInstance();
};
//MyThread.cpp文件
IMPLEMENT_DYNAMIC(CMyThread,CWinThread) //这一句是我加的
BOOL CMyThread::InitInstance() //进程启动时建立并显示一个窗口
{
CFrameWnd* pFrameWnd = new CFrameWnd;
pFrameWnd->Create("NULL","Thread Window");
pFrameWnd->ShowWindow(SW_SHOW);
pFrameWnd->UpdateWindow();
delete pFrameWnd;
return true;
}
//主程序里的菜单响应函数
void CEx13AView::OnThreadUser()
{
// TODO: Add your command handler code here
AfxBeginThread(RUNTIME_CLASS(CMyThread));
}
编译无错,但是运行后弹出消息说“内存不足”
解决方法:
是宏用的不当,应该使用和dyncreate有关的宏
应该是
//MyThread.h文件
DECLARE_DYNCREATE(CMyThread);
//MyThread.cpp文件
IMPLEMENT_DYNCREATE(CMyThread,CWinThread)