基本概念
常见宏定义
ANSI字符串转UNICODE:
不建议使用TEXT
win命令规则:
windowapi位置:
2 hello world
vs2017 community
方式一
如果这里设置使用Unicode字符集,则说明了定义unicode,此时:
#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif // !UNICODE
MessageBox使用宽字符,如果直接写:
则提示报错,因为hello world是ANSI编码。需要转为Unicode编码:
#include <Windows.h>
int main()
{
MessageBox(NULL, L"hello world", L"HELLO", MB_OK);
return 0;
}
API链接:https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebox
运行程序,发现先打开一个控制台,后出现窗口:
这是因为新建的控制台程序。
将子系统改为窗口:
再将mian替换为
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
#include <Windows.h>
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
MessageBox(NULL, L"hello world", L"HELLO", MB_OK);
return 0;
}
再次运行程序,发现没有控制台窗口
方式二: