C ++ MFC错误C2664

时间:2014-05-11 20:00:55

标签: c++ visual-c++ mfc c2664

我正在尝试使用c ++和mfc创建一个简单的窗口。以下代码取自“Visual C ++和MFC基础”一书,但它不起作用。我得到错误C2664:BOOL CFrameWnd :: Create(LPCTSTR,LPCTSTR,...)无法将参数2从const char [20]转换为LPCTSTR。如何更改代码才能使其正常工作?

#include <afxwin.h>
class CSimpleFrame : public CFrameWnd
{
public:
CSimpleFrame()
{
// Create the window's frame
Create(NULL, "Windows Application");
}
};
struct CSimpleApp : public CWinApp
{
BOOL InitInstance()
{
// Use a pointer to the window's frame for the application
// to use the window
CSimpleFrame *Tester = new CSimpleFrame ();
m_pMainWnd = Tester;
// Show the window
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;
}
};
CSimpleApp theApp;

2 个答案:

答案 0 :(得分:3)

您可能正在使用Unicode字符集(这是默认设置)构建应用程序。将违规行更改为:

Create(NULL, _T("Windows Application"));

根据字符集的不同,_T可以扩展为空(MBSC),也可以扩展为L(Unicode),从而产生wide character string

答案 1 :(得分:0)

如果字符集对您来说并不重要,并希望“永远”摆脱这种错误,您可以转到Project Properties - &gt; Configuration Properties - &gt; General - &gt; Character Set,并将其设置为Use Multi-Byte Character Set。如果没有,_T()和/或L是您的朋友(取决于您的字符集设置)