请教一个c++问题,高手来
#include<afxwin.h>classMyWindows:publicCFrameWnd{public:MyWindows(){Create(NULL,"MyAp...
#include <afxwin.h>
class MyWindows:public CFrameWnd
{
public:
MyWindows()
{
Create(NULL,"My Application Windows");
MessageBox("Windows Created","CFrameWnd Constructor");
}
};
class MyApp:public CWinApp
{
public:
bool InitInstance()
{
MyWindows *MyWindowsObject = new MyWindows();
m_pMainWnd= MyWindowsObject;
MyWindowsObject->ShowWindow(SW_SHOWNORMAL);
return true;
}
};
MyApp MyAppObject;
这行代码有错么?
为何vs08报错
错误 1 error C2664: “CFrameWnd::Create”: 不能将参数 2 从“int”转换为“LPCTSTR” f:\疯狗残云\documents\visual studio 2008\projects\sample\sample\sample.cpp 8 sample
错误 2 error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [16]”转换为“LPCTSTR” f:\疯狗残云\documents\visual studio 2008\projects\sample\sample\sample.cpp 9 sample
错误 3 error C2555: “MyApp::InitInstance”: 重写虚函数返回类型有差异,且不是来自“CWinApp::InitInstance”的协变 f:\疯狗残云\documents\visual studio 2008\projects\sample\sample\sample.cpp 23 sample
1楼,
“比如第一个错误,是说Create()函数的第二个参数应当是int型的,结果你传了一个字符串类型的参数,当然会报错了。。。(LPCTSTR就是char*)”
你不是搞笑么?Create函数的第二个是int型? 展开
class MyWindows:public CFrameWnd
{
public:
MyWindows()
{
Create(NULL,"My Application Windows");
MessageBox("Windows Created","CFrameWnd Constructor");
}
};
class MyApp:public CWinApp
{
public:
bool InitInstance()
{
MyWindows *MyWindowsObject = new MyWindows();
m_pMainWnd= MyWindowsObject;
MyWindowsObject->ShowWindow(SW_SHOWNORMAL);
return true;
}
};
MyApp MyAppObject;
这行代码有错么?
为何vs08报错
错误 1 error C2664: “CFrameWnd::Create”: 不能将参数 2 从“int”转换为“LPCTSTR” f:\疯狗残云\documents\visual studio 2008\projects\sample\sample\sample.cpp 8 sample
错误 2 error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [16]”转换为“LPCTSTR” f:\疯狗残云\documents\visual studio 2008\projects\sample\sample\sample.cpp 9 sample
错误 3 error C2555: “MyApp::InitInstance”: 重写虚函数返回类型有差异,且不是来自“CWinApp::InitInstance”的协变 f:\疯狗残云\documents\visual studio 2008\projects\sample\sample\sample.cpp 23 sample
1楼,
“比如第一个错误,是说Create()函数的第二个参数应当是int型的,结果你传了一个字符串类型的参数,当然会报错了。。。(LPCTSTR就是char*)”
你不是搞笑么?Create函数的第二个是int型? 展开
3个回答
展开全部
字符类型的问题!
VS2008默认使用UNICODE编码的,一个字符是两个字节!上面的代码应该修改成这样:
MyWindows()
{
Create(NULL,L"My Application Windows");
MessageBox(L"Windows Created",L"CFrameWnd Constructor");
}
即系在字符串前面加上一个L,L是一个宏!
Create函数需要LPCTSTR类型的参数, LPCTSTR是一个宏,如果定义了UNICODE,则LPCTSTR解释为LPCWSTR,其中的W就是Wide的意思,即系宽,也就是上面说的
一个字符是两个字节。如果没有定义UNICODE,则LPCTSTR解释为LPCSTR。由于VS2008默认使用UNICODE,所以要用宏L来强制类型转换。
建议你先了解一下这方面的知识,否则后面还会遇到问题的!《PROGRAMMING WINDOWNS>这本书的前两章有介绍这方面的知识!
VS2008默认使用UNICODE编码的,一个字符是两个字节!上面的代码应该修改成这样:
MyWindows()
{
Create(NULL,L"My Application Windows");
MessageBox(L"Windows Created",L"CFrameWnd Constructor");
}
即系在字符串前面加上一个L,L是一个宏!
Create函数需要LPCTSTR类型的参数, LPCTSTR是一个宏,如果定义了UNICODE,则LPCTSTR解释为LPCWSTR,其中的W就是Wide的意思,即系宽,也就是上面说的
一个字符是两个字节。如果没有定义UNICODE,则LPCTSTR解释为LPCSTR。由于VS2008默认使用UNICODE,所以要用宏L来强制类型转换。
建议你先了解一下这方面的知识,否则后面还会遇到问题的!《PROGRAMMING WINDOWNS>这本书的前两章有介绍这方面的知识!
展开全部
自己不会看报错信息吗?
比如第一个错误,是说Create()函数的第二个参数应当是int型的,结果你传了一个字符串类型的参数,当然会报错了。。。(LPCTSTR就是char*)
其他错自己看吧,编译器都已经说的再清楚不过了
比如第一个错误,是说Create()函数的第二个参数应当是int型的,结果你传了一个字符串类型的参数,当然会报错了。。。(LPCTSTR就是char*)
其他错自己看吧,编译器都已经说的再清楚不过了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我在vs2005上调试通过了,修改了两个地方,不多说了,代码如下,自己参详吧:
#include <afxwin.h>
class MyWindows:public CFrameWnd
{
public:
MyWindows()
{
Create(NULL,L"My Application Windows");
MessageBox(L"Windows Created",L"CFrameWnd Constructor");
}
};
class MyApp:public CWinApp
{
public:
BOOL InitInstance()
{
MyWindows *MyWindowsObject = new MyWindows();
m_pMainWnd= MyWindowsObject;
MyWindowsObject->ShowWindow(SW_SHOWNORMAL);
return true;
}
};
注意,还没有main()函数的啊,你自己工程应该有吧~
#include <afxwin.h>
class MyWindows:public CFrameWnd
{
public:
MyWindows()
{
Create(NULL,L"My Application Windows");
MessageBox(L"Windows Created",L"CFrameWnd Constructor");
}
};
class MyApp:public CWinApp
{
public:
BOOL InitInstance()
{
MyWindows *MyWindowsObject = new MyWindows();
m_pMainWnd= MyWindowsObject;
MyWindowsObject->ShowWindow(SW_SHOWNORMAL);
return true;
}
};
注意,还没有main()函数的啊,你自己工程应该有吧~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询