同样的代码VC6能完美运行,VS2013不能运行

#include<Windows.h>HINSTANCEg_hInstance=0;//用于接受进程句柄voidSysReg(){HWNDhWnd=CreateWindo... #include<Windows.h>

HINSTANCE g_hInstance = 0;//用于接受进程句柄

void SysReg()
{
HWND hWnd = CreateWindow("BUTTON", "OK",
WS_OVERLAPPEDWINDOW, 100, 100, 500, 500,
NULL, NULL, g_hInstance, NULL);

ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);

MSG nMsg = { 0 };

while (GetMessage(&nMsg, NULL, 0, 0))
{
TranslateMessage(&nMsg);
DispatchMessage(&nMsg);
}
}

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPervInstance, LPSTR IpCmdLine, int nCmdShow)
{
g_hInstance = hInstance;
SysReg();
return 0;
}

我是初学者,在VS2013中,CreateWindow好像被替换成了CreateWindowW
转到定义是#define CreateWindow CreateWindowW
展开
 我来答
vampire_c
2015-02-09 · TA获得超过735个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:486万
展开全部

CreateWindowW表示是宽字符集(WCHAR),对应的有CreateWindowA表示ANSI字符集,这是由系统使用的字符集决定的,因此程序中只使用CreateWindow,由Windows.h库来决定具体使用哪个函数。


编译错误应该是由于调用CreateWindow时的字符串常量导致的,改成如下这样:

CreateWindow(_T("BUTTON"), _T("OK"),
WS_OVERLAPPEDWINDOW, 100, 100, 500, 500, 
NULL, NULL, g_hInstance, NULL);

将字符串常量用 _T() 宏包含起来,这样可以确保定义的字符串常量与系统字符集一致。

微测检测5.10
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇... 点击进入详情页
本回答由微测检测5.10提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式