case WM_LBUTTONDOWN:
{
// 获取鼠标 X、Y 坐标
int x = LOWORD(lParam); // 水平坐标
int y = HIWORD(lParam); // 垂直坐标
MessageBox(hWnd, "左键按下", "鼠标", 0);
break;
}
case WM_RBUTTONDOWN:
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);
MessageBox(hWnd, "右键按下", "鼠标", 0);
break;
}
case WM_KEYDOWN:
{
// wParam 就是 按键的虚拟键码
int key = wParam;
// 判断按了什么键
if (key == VK_UP) MessageBox(hWnd, "上箭头", "键盘", 0);
if (key == VK_DOWN) MessageBox(hWnd, "下箭头", "键盘", 0);
if (key == VK_LEFT) MessageBox(hWnd, "左箭头", "键盘", 0);
if (key == VK_RIGHT) MessageBox(hWnd, "右箭头", "键盘", 0);
if (key == 'A') MessageBox(hWnd, "按了A", "键盘", 0);
if (key == 'W') MessageBox(hWnd, "按了W", "键盘", 0);
if (key == VK_SPACE) MessageBox(hWnd, "空格", "键盘", 0);
break;
}
case WM_MOUSEMOVE:
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);
// 鼠标一直在动,这里可以实时获取坐标
break;
}
// 窗口消息回调函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
// 窗口创建
case WM_CREATE:
break;
//----------------------
// 键盘按下
//----------------------
case WM_KEYDOWN:
{
int key = wParam;
if (key == VK_UP) MessageBox(hWnd, "上", "键", 0);
if (key == VK_DOWN) MessageBox(hWnd, "下", "键", 0);
if (key == VK_LEFT) MessageBox(hWnd, "左", "键", 0);
if (key == VK_RIGHT) MessageBox(hWnd, "右", "键", 0);
if (key == 'A') MessageBox(hWnd, "A", "键", 0);
if (key == 'W') MessageBox(hWnd, "W", "键", 0);
break;
}
//----------------------
// 鼠标左键
//----------------------
case WM_LBUTTONDOWN:
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);
MessageBox(hWnd, "左键点击", "鼠标", 0);
break;
}
//----------------------
// 鼠标右键
//----------------------
case WM_RBUTTONDOWN:
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);
MessageBox(hWnd, "右键点击", "鼠标", 0);
break;
}
//----------------------
// 鼠标移动
//----------------------
case WM_MOUSEMOVE:
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);
// 实时坐标
break;
}
// 窗口关闭
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}