vc初学者问:《技术内幕》(第四版)19页的例子怎么不好使呢? 我按照书上写的敲进去,结果出错这是怎么回事?ps.这个例子还没用到向导,那么应该建立什么样的工程啊,怎么建立? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 什么错误贴出来。可以建立一个win32 application。其实这个例子没什么看头,看这本书也没必要弄清楚到底是怎么回事,照着它说的做就行了。要想掌握MFC框架程序的生老病死,看《深入浅出MFC》吧。 建立了一个win32 applicationMyApp.h文件class CMyApp:public CWinApp{public: virtual BOOL InitInstance();};class CMyFrame:public CFrameWnd{public: CMyFrame();protected: afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnPaint(); DECLARE_MESSAGE_MAP();};MyApp.cpp文件#include <afxwin.h>#include "MyApp.h"CMyApp theApp;BOOL CMyApp::InitInstance(){ m_pMainWnd = new CMyFrame(); m_pMainWnd->ShowWindow(m_nCmdShow); m_pMainWnd->UpdateWindow(); return TRUE;}BEGIN_MESSAGE_MAP(CMyFrame, CFrameWnd)ON_WM_LBUTTONDOWN()ON_WM_PAINT()END_MESSAGE_MAP()CMyFrame::CMyFrame(){ Create(NULL , "Myapp Application");}void CMyFrame::OnLButtonDown(UINT nFlags,CPoint point){ TRACE("Entering CMyFrame::OnLButtonDown - %1x,%d,%d\n",(long)nFlags,point.x, point.y);}void CMyFrame::OnPaint(){ CPaintDC dc(this); dc.TextOut(0, 0 ,"Hello World!");}编译没错,链接Linking...nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexDebug/MyApp.exe : fatal error LNK1120: 2 unresolved externalsError executing link.exe.MyApp.exe - 3 error(s), 0 warning(s) 在project settings里面的Gernral页中选中Use MFC in a shared DLL。 或在Link页面里的Project Options里面加上一个 /MT 选项。 上面说错了,应该在C/C++页面的Project Options里面加。 unresolved external symbol __beginthreadex找不到呢个函数。 线程设置问题!set -> c/c++ -> Code Generation -> Use run-time library 选 Debug Multithreaded Dll #include <afxwin.h>class CMyApp:public CWinApp{public: virtual BOOL InitInstance();};class CMyFrame:public CFrameWnd{public: CMyFrame();protected: afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnPaint(); DECLARE_MESSAGE_MAP();};CMyApp theApp;BOOL CMyApp::InitInstance(){ m_pMainWnd = new CMyFrame(); m_pMainWnd->ShowWindow(m_nCmdShow); m_pMainWnd->UpdateWindow(); return TRUE;}BEGIN_MESSAGE_MAP(CMyFrame, CFrameWnd)ON_WM_LBUTTONDOWN()ON_WM_PAINT()END_MESSAGE_MAP()CMyFrame::CMyFrame(){ Create(NULL , "Myapp Application");}void CMyFrame::OnLButtonDown(UINT nFlags,CPoint point){ TRACE("Entering CMyFrame::OnLButtonDown - %1x,%d,%d\n",(long)nFlags,point.x, point.y);}void CMyFrame::OnPaint(){ CPaintDC dc(this); dc.TextOut(0, 0 ,"Hello World!");}===============================================================将上面的代码拷贝,粘贴到记事本文件,然后另存为1.cpp再用VC6.0打开编译==========================================================下面按照做调整,按 ALT+ F7组合键将弹出Project Setting ,然后点击C/C++ tab,将preprocessor definitions 里的 WIN32,_DEBUG,_MBCS,_CONSOLE 改为WIN32,_DEBUG,_MBCS,_WINDOWS然后切换到Link tab标签找到Project Options即最下面那个框将“/subsystem:console”改为/subsystem:windows然后编译,它将报告:ompiling...1.cppLinking...nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexDebug/1.exe : fatal error LNK1120: 2 unresolved externalsError executing link.exe.1.exe - 3 error(s), 0 warning(s)然后:按 ALT+ F7组合键将弹出Project Setting ,点击C/C++ tab找到category:即第一个下拉框中选中code Generation之后你将看见有一个将Use run-time library:的标签,即reset按钮下面第一个下拉框将Debug Multithreaded选中,好了点击OK退出,编译 MFC窗口分隔条如何更改风格 ftp程序下载时很卡,界面还刷新不了? 在VC project 里,如何添加整个目录,和下面的所有文件? 找RIFF文件格式的中文说明。 关于对话框句柄的简单问题(100分都送给第一个解决的人!) 请问哪儿有vc++6.0下载?安装成功就结贴给分.急!! 急救!急急急3!!!!!!!!!!! 操作符重载 比较弱智的问题,ActiveX自动化中,通过接口如何能使用里面的类及成员函数呢? 发个帖了解下收入行情 如何让组合框显示指定的值? 要将一个资源管理器嵌入到我的界面当中,有什么方法啊?
可以建立一个win32 application。
其实这个例子没什么看头,看这本书也没必要弄清楚到底是怎么回事,照着它说的做就行了。要想掌握MFC框架程序的生老病死,看《深入浅出MFC》吧。
class CMyApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};class CMyFrame:public CFrameWnd
{
public:
CMyFrame();
protected:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP();
};MyApp.cpp文件
#include <afxwin.h>
#include "MyApp.h"CMyApp theApp;BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMyFrame();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}BEGIN_MESSAGE_MAP(CMyFrame, CFrameWnd)
ON_WM_LBUTTONDOWN()
ON_WM_PAINT()
END_MESSAGE_MAP()CMyFrame::CMyFrame()
{
Create(NULL , "Myapp Application");
}void CMyFrame::OnLButtonDown(UINT nFlags,CPoint point)
{
TRACE("Entering CMyFrame::OnLButtonDown - %1x,%d,%d\n",(long)nFlags,point.x, point.y);
}void CMyFrame::OnPaint()
{
CPaintDC dc(this);
dc.TextOut(0, 0 ,"Hello World!");
}
编译没错,链接
Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/MyApp.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.MyApp.exe - 3 error(s), 0 warning(s)
找不到呢个函数。
set -> c/c++ -> Code Generation -> Use run-time library 选 Debug Multithreaded Dll
class CMyApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};class CMyFrame:public CFrameWnd
{
public:
CMyFrame();
protected:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP();
};CMyApp theApp;BOOL CMyApp::InitInstance()
{
m_pMainWnd = new CMyFrame();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}BEGIN_MESSAGE_MAP(CMyFrame, CFrameWnd)
ON_WM_LBUTTONDOWN()
ON_WM_PAINT()
END_MESSAGE_MAP()CMyFrame::CMyFrame()
{
Create(NULL , "Myapp Application");
}void CMyFrame::OnLButtonDown(UINT nFlags,CPoint point)
{
TRACE("Entering CMyFrame::OnLButtonDown - %1x,%d,%d\n",(long)nFlags,point.x, point.y);
}void CMyFrame::OnPaint()
{
CPaintDC dc(this);
dc.TextOut(0, 0 ,"Hello World!");
}
===============================================================
将上面的代码拷贝,粘贴到记事本文件,然后另存为1.cpp
再用VC6.0打开编译
==========================================================
下面按照做调整,按 ALT+ F7组合键将弹出Project Setting ,然后点击C/C++ tab,将preprocessor definitions 里的 WIN32,_DEBUG,_MBCS,_CONSOLE 改为WIN32,_DEBUG,_MBCS,_WINDOWS
然后切换到Link tab标签找到Project Options即最下面那个框将“/subsystem:console”改为/subsystem:windows然后编译,它将报告:ompiling...
1.cpp
Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/1.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.1.exe - 3 error(s), 0 warning(s)然后:
按 ALT+ F7组合键将弹出Project Setting ,点击C/C++ tab找到category:即第一个下拉框中选中code Generation之后你将看见有一个将Use run-time library:的标签,即reset按钮下面第一个下拉框将Debug Multithreaded选中,好了点击OK退出,编译