请教一个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型?
展开
 我来答
okenjian
2009-03-16 · 超过10用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:10.2万
展开全部
字符类型的问题!
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>这本书的前两章有介绍这方面的知识!
百度网友bf333cc97
2009-03-12 · TA获得超过970个赞
知道小有建树答主
回答量:692
采纳率:0%
帮助的人:705万
展开全部
自己不会看报错信息吗?

比如第一个错误,是说Create()函数的第二个参数应当是int型的,结果你传了一个字符串类型的参数,当然会报错了。。。(LPCTSTR就是char*)

其他错自己看吧,编译器都已经说的再清楚不过了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jlike
2009-03-16 · 超过27用户采纳过TA的回答
知道答主
回答量:152
采纳率:0%
帮助的人:79.7万
展开全部
我在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()函数的啊,你自己工程应该有吧~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式