鼠标左键检测器 通过单击鼠标左键来检测你的鼠标左键是否可以使用
环境介绍:
使用系统:win11 64 位操作系统
IDE工具:VS2022 (64 位)
1.创建一个新的项目
2.使用Windows桌面向导创建项目
3.选择到控制台应用程序(.exe)
选择空项目
4.配置项目属性,进入属性里找到链接器,将子系统又控制台改为窗口
接下来创建头文件,随后输入以下代码就可以出现程序了
#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //处理消息体
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("MyWindow");
HWND hwnd; //
MSG msg;
WNDCLASS wc;//窗口类
//窗口熟悉
wc.style = CS_HREDRAW | CS_VREDRAW; //样式
wc.lpszClassName = szAppName; //类名
wc.lpszMenuName = NULL; //菜单
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //背景色
wc.lpfnWndProc = WndProc; //处理函数,上面定义
wc.cbWndExtra = 0;
wc.cbClsExtra = 0;
wc.hInstance = hInstance; //实例
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); //图标
wc.hCursor = LoadCursor(NULL, IDC_ARROW); //鼠标
if (!RegisterClass(&wc)) {
MessageBox(NULL, TEXT("窗口注册失败"), TEXT("错误"), MB_OK | MB_ICONERROR);
return 0;
}
//创建窗口
hwnd = CreateWindow(
szAppName, //类名
TEXT("first windows"), // 标题
WS_OVERLAPPEDWINDOW, //风格
CW_USEDEFAULT, // 显示位置 x
CW_USEDEFAULT, // 显示位置 y
CW_USEDEFAULT, // 宽度
CW_USEDEFAULT, // 高度
NULL, //父窗口
NULL, //父窗口
hInstance, //句柄
NULL
);
ShowWindow(hwnd, iCmdShow);// 显示窗口
UpdateWindow(hwnd);//更新窗口
//接受消息
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);//虚拟消息转为字符消息
DispatchMessage(&msg);//分发回调
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lParam)
{
HDC hdc; //设备环境句柄
PAINTSTRUCT ps;//绘制矩形
RECT rect; //矩形结构
switch (message)
{
case WM_CREATE: //窗口创建完成发来消息
MessageBox(hwnd, TEXT("程序加载中请稍等!"), TEXT("鼠标左键检测器"), MB_OK | MB_ICONINFORMATION);
return 0;
case WM_PAINT: //处理窗口区域无效时发来的消息
{
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
DrawText(hdc, TEXT("鼠标左键检测器!请单击鼠标左键"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_CENTER);
EndPaint(hwnd, &ps);
return 0;
}
case WM_LBUTTONDOWN:
MessageBox(hwnd, TEXT("你的鼠标左键没有问题"), TEXT("检测结果"), MB_OK | MB_ICONINFORMATION);
return 0;
case WM_DESTROY: //处理窗口关闭的时候发出的消息
{
MessageBox(hwnd, TEXT("真的吗?"), TEXT("真的要关闭吗"), MB_OK | MB_ICONINFORMATION);
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hwnd, message, wparam, lParam);
}
出现问题解决
错误提示: 无法解析的外部符号 _main,函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中引用了该符号
如何解决?
把项目属性->链接器->系统->子系统 由其他改成窗口