学习MFC,在演示教材程序的问题.(VC6和VC2005)我用的教材是MFC Windows 程序设计 第二版 修订版.
书上的所有示例是在VC6.0下编译通过,在光盘内带有执行程序和源代码.
由于VC6.0的系统BUG太多,总是在不经义的时候编译就锁死,只能强行关闭,使用时地经常保存才行.
在一个不支持中文.所以我己经不使用他,一直在使用VS2005中文专业版.现在有个问题是,如果我建立一个Windows工程,把书上代码输入进去,就会出现这么一个错误.1>libcmtd.lib(wincrt0.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
1>D:\Backup\我的文档\Visual Studio 2005\Projects\my\Debug\my.exe : fatal error LNK1120: 1 个无法解析的外部命令(输入过程设有错)我最后还是担心输错一点,出错.
最后我把光盘内的源文件直接复制过来,还是同样的错误.
还有就是直接复制文件,然后建立空工程,同样还是这个错误.不能正常编译.但是有一点的情况是.我试过好多个示例程序,都是同样的情况.
就连最简单的Hello MFC都无法通过.例如:
Hello MFC示例共有4个文件,Hello.h  Hello.cpp  Hello.dsw  Hello.dsp
直接打开dsw文件,VC2005会提示是否转换为2005工程,转换以后开始编译,是可以正常通过.
可以修改输出内容,同样会正常编译执行.但是文件内容是一模一样,转换后的2005工程文件.sln和新建的也一样,但是我新建工程,输入代码就会出错上面的错误.
这是个什么原因了,我好多天都无法找到答案.
难道是2005支持的MFC和6.0的MFC不一样.
从6.0转换,2005会认为是6.0工程,所以正确编译了.
但直接新建,2005会认为是代码存在某些问题,所以不能编译.在提供Hello MFC的源代码.//Hello.hclass CMyApp : public CWinApp
{
public:
    virtual BOOL InitInstance ();
};class CMainWindow : public CFrameWnd
{
public:
    CMainWindow ();protected:
    afx_msg void OnPaint ();
    DECLARE_MESSAGE_MAP ()
};
//Hello.cpp#include <afxwin.h>
#include "Hello.h"CMyApp myApp;/////////////////////////////////////////////////////////////////////////
// CMyApp member functionsBOOL CMyApp::InitInstance ()
{
    m_pMainWnd = new CMainWindow;
    m_pMainWnd->ShowWindow (m_nCmdShow);
    m_pMainWnd->UpdateWindow ();
    return TRUE;
}/////////////////////////////////////////////////////////////////////////
// CMainWindow message map and member functionsBEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
    ON_WM_PAINT ()
END_MESSAGE_MAP ()CMainWindow::CMainWindow ()
{
    Create (NULL, _T ("The Hello Application"));
}void CMainWindow::OnPaint ()
{
    CPaintDC dc (this);
    
    CRect rect;
    GetClientRect (&rect);    dc.DrawText (_T ("Hello, MFC"), -1, &rect,
        DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}