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