刚学MFC的时候从网上找到一个教程的例了代码,如下:
class sample:public CFrameWnd
{
public:
sample()
{
Create(NULL,"MFC Window");
MessageBox("My MFC Windows","CFrameconstructor",MB_OK);
}
};
class App:public CWinApp
{
public:
BOOL InitInstance();
BOOL ExitInstance();
};
BOOL App::InitInstance()
{
MessageBox(0,"My MFCWindows","InitInstance",MB_OK|MB_ICONASTERISK);
sample *obj;
obj= new sample;
m_pMainWnd=obj;
obj->ShowWindow(SW_SHOWMAXIMIZED);
return true;
};
BOOL App::ExitInstance()
{
MessageBox(0,"My Window","ExitInitInstance",MB_OK|MB_ICONHAND);
return true;
}
App a;
按说明在VS2008下新建 c++win32 application 在源文件下贴入上面的代码,编译,发现大堆错误;教程里没说有错误,只说没有引用MFC类库编译会有其它问题, 所以就怀疑是不是开发及编译环境的问题(因为不懂啊,乱猜测,原来跟这没啥关系),所以就下载了个vc6.0的环境重新建了工程,输入代码,发现问题依旧;几经折腾,发现原来是没有引用相关头文件,#include"afxwin.h" 加上后vc6.0下顺利编译,运行; 但ms2008下的加上头文件后还是不行,但错误提示是不能转换char[n] 到LPCSSTR;原来要用reinterpret_cast<LPCTSTR>("My Window") 作一次转换。问题又出来了,在VS2008下用转换后的代码运行发现那些字符显示都乱码了;
解决办法如下:
可以把工程设为多字符集选中解决方案管理器中的项目,右键->属性->配置属性->常规,在右面字符集一栏单击一下字符集编辑输入区域,在下拉框中选择“使用多字节字符集”即可
也可以直接定义这样LPCTSTR lps = "MyMFC Window";
另附一些小窍门
1)
有时候,你可能在编译的时候,计算机突然非法关机了(可能某人不小心碰了电源或你的内存不稳定等原因)。当你重启机器后打开刚才的项目,重新进行编译,发现VC会崩掉。你或许以为你的VC编译器坏了,其实不然(你试试编译其它项目,还是好的!),你只要将项目的.ncb、.opt、.aps、.clw文件以及Debug、Release目录下的所有文件都删掉,然后重新编译就行了。
2)
如果你想与别人共享你的源代码项目,但是把整个项目做拷贝又太大。你完全可以删掉以下文件:.dsw、.ncb、.opt、.aps、.clw、. plg文件以及Debug、Release目录下的所有文件。
3)
当你的Workspace中包含多个Project的时候,你可能不能直观地、一眼看出来哪个是当前项目。可以如下设置:Tools->Options->Format,然后在Category中选择Workspacewindow
,改变其默认的字体(比如设成Fixedsys)就行了。
4)
如何给已有的Project改名字?将该Project关掉。然后以文本格式打开.dsp文件,替换原来的Project名字即可。
5) VC6对类成员的智能提示功能很有用,但有时候会失灵。你可以先关掉项目,将.clw和.ncb
删掉,然后重新打开项目,点击菜单项View->ClassWizard,在弹出的对话框中按一下“Add All”按钮;重新Rebuild All。应该可以解决问题。