1、打开VisualStudio 2019,选择“创建新项目”
2、进入“创建新项目”界面,选择“Windows桌面应用向导”,点击“下一步”
3、配置新项目:为新项目输入项目名称。指定项目存放文件的位置
4、点击“创建”
5、选择希望创建的新项目的类型,在本例中,选择“桌面应用程序”,"空项目"
6、添加第一个源文件:鼠标右键点击“源文件”,选择“添加”->“新建项”
7、选择新建项类型为“C++文件(.cpp)”,输入源文件的名称myTest.cpp,点击“添加”
8、将以下代码拷贝到myTest.cpp之中:
#include<windows.h>
//定义回调函数,处理窗口消息的函数
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
//定义一个静态变量用于保存应用程序的名称,数据类型是TCHAR数组
static TCHAR szAppName[] = TEXT("CreateWin32_Form Sample!");
//定义一个窗口句柄变量
HWND hwnd;
//定义一个消息变量
MSG msg;
//定义一个窗口类,实例名称wndclass
WNDCLASS wndclass;
//为窗口类的属性赋值
//窗口类的风格属性
wndclass.style = CS_HREDRAW | CS_VREDRAW;
//窗口类的消息处理函数,将消息传递给WndProc函数进行处理
wndclass.lpfnWndProc = WndProc;
//窗口类的附加数据
wndclass.cbClsExtra = 0;
//窗口的附加数据
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = CreateSolidBrush(RGB(0, 100, 100));
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
//注册窗口类
if (!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("注册失败!"), szAppName, MB_ICONERROR);
return 0;
}
//为窗体添加WS_EX_LAYERED属性,该属性使窗体支持透明
hwnd = CreateWindowEx(WS_EX_LAYERED, szAppName, TEXT("我的第一个窗口例程"),
WS_POPUP | WS_VISIBLE, 200, 200, 800, 600, NULL, NULL, hInstance, NULL);
BYTE byteAlpha = 180;
// 设置WS_EX_LAYERED属性,该属性使窗体支持透明
SetLayeredWindowAttributes(hwnd, NULL, byteAlpha, LWA_ALPHA);
// 显示窗口
ShowWindow(hwnd, iCmdShow);
// 更新窗口
UpdateWindow(hwnd);
// 启动消息处理机制
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// 退出窗口,返回消息到Windows
return msg.wParam;
}
// 消息处理回调函数原型
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int result;
switch (message)
{
case WM_LBUTTONDOWN:
{
//鼠标左键的响应函数,启动拖动事件
SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
break;
}
case WM_KEYDOWN:
switch (wParam)
{
case VK_ESCAPE:
// Escape键的操作响应
result = MessageBox(hwnd, "确定退出吗?", "退出!",
MB_YESNO | MB_ICONQUESTION);
if (result == IDYES)
PostQuitMessage(0);
return 0;
default:
return 0;
}
case WM_DESTROY:
// 退出程序的消息处理
PostQuitMessage(0);
return 0;
}
// 未定义的消息交给系统的默认函数进行处理
return DefWindowProc(hwnd, message, wParam, lParam);
}
9、编译代码,系统提示“发生生成错误”,在输出栏看到以下消息输出
提示在myTest.cpp的90行发生无法将参数2从"const char [12]"转换为“LPCWSTR”,这是因为VisualStudio2019默认的字符集为UNICODE。
10、鼠标右键点击项目名称,选择“属性”->“配置属性”->“高级”->“高级属性”->“字符集”,将字符集属性修改为“使用使用多字节字符集”
11、重新编译并运行,代码可以正常运行了。
VS2019界面的改变可能会有点不习惯,不过核心的内容只是换了个新的面孔出现了。希望能够在使用中逐渐熟悉他的这些变化。