win32_API里的WM_KEYDOWN和WM_KEYUP

近期关于win32_API里的WM_KEYDOWN和WM_KEYUP的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯 ,并进行了系统化的梳理 。若这些内容恰好能为您提供参考,将是我们最大的荣幸。

持续按住一个键不放是产生多个WM_KEYDOWN,最后只产生一个WM_KEYUP ,你的timer无法被处理是因为WM_TIMER在消息队列中的优先级别很低,你按下键的时候在不断地向窗口发送WM_KEYDOWN消息,所以timer的消息处理不到 ,解决方法是在消息循环里做手脚,如果按下了一个键而没有弹起的话,就忽略之后的按键消息 ,这样就能腾出时间来处理timer了:

#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)

{

WNDCLASS ws;

ws.style = CS_HREDRAW | CS_VREDRAW;

ws.lpfnWndProc = WndProc;

ws.cbClsExtra = 0;

ws.cbWndExtra = 0;

ws.hInstance = hInstance;

ws.hIcon = LoadIcon(NULL, IDI_APPLICATION);

ws.hCursor = LoadCursor(NULL, IDC_ARROW);

ws.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);

ws.lpszMenuName = NULL;

ws.lpszClassName = "Timer";

if(!RegisterClass(&ws))

return 0;

HWND hwnd = CreateWindow("Timer",

NULL,

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

NULL,

NULL,

hInstance,

NULL);

ShowWindow(hwnd, iCmdShow);

UpdateWindow(hwnd);

MSG msg;

bool hold = false;

while(GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

if(msg.message == WM_KEYDOWN && !hold)

{

hold = true;

DispatchMessage(&msg);

}

else if(msg.message == WM_KEYDOWN)

; // 忽略多余的按键

else if(msg.message == WM_KEYUP)

{

hold = false;

DispatchMessage(&msg);

}

else

DispatchMessage(&msg);

}

return msg.wParam;

}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

static TCHAR szBuf[32];

HDC hdc;

TEXTMETRIC tm;

static UINT key;

static int cyChar, i = 1;

switch(message)

{

case WM_CREATE:

hdc = GetDC (hwnd) ;

GetTextMetrics (hdc, &tm) ;

cyChar = tm.tmHeight + tm.tmExternalLeading ;

ReleaseDC (hwnd, hdc) ;

return 0;

case WM_KEYDOWN:

key = wParam;

SetTimer(hwnd, 1, 1000, NULL);

InvalidateRect(hwnd, NULL, TRUE);

return 0;

case WM_TIMER:

hdc = GetDC(hwnd);

TextOut(hdc, 0, 0, szBuf, wsprintf(szBuf, "Key: '%c' %d sec", key, i++));

ReleaseDC(hwnd, hdc);

return 0;

case WM_KEYUP:

hdc = GetDC(hwnd);

i = 1;

TextOut(hdc, 0, cyChar, szBuf, wsprintf(szBuf, "Done!"));

ReleaseDC(hwnd, hdc);

KillTimer(hwnd, 1);

return 0;

case WM_DESTROY:

PostQuitMessage(0);

return 0;

}

return DefWindowProc(hwnd, message, wParam, lParam);

}

关于win32_API里的WM_KEYDOWN和WM_KEYUP的相关内容介绍到此告一段落 ,若这些信息对您有所启发,欢迎持续关注本站获取更多优质内容。

本文来自作者[繡譽自限慣]投稿,不代表旋风格立场,如若转载,请注明出处:https://xfg666.cn/wenzhang/731.html

(81)

文章推荐

  • 必看教程“约战荆门麻将有挂吗!分享用挂教程

    必看教程“约战荆门麻将有挂吗!分享用挂教程您好:约战荆门麻将有挂吗这款游戏可以开挂,确实是有挂的,很多玩家在小程序雀神麻将开挂这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂

    2025年11月27日
    44321
  • 必看教程“财神十三张有挂吗”(详细开挂教程)

    必看教程“财神十三张有挂吗”(详细开挂教程)财神十三张有挂吗是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加入我们(QQ群聊)免费测试,先看效果下载使用。手机打牌可以一键让你轻松成为“必赢”。其操作方式十分简单,打开这个应用便可以自定义手机打牌系统

    2025年12月14日
    29308
  • 实操教程“河北家乡麻将怎么开挂”详细开挂教程

    实操教程“河北家乡麻将怎么开挂”详细开挂教程亲,河北家乡麻将怎么开挂这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的通过添加客服微:

    2025年12月24日
    26314
  • 万能开挂辅助“微信小程序扑克牌辅助器”(揭秘微信里输赢规律)

    实操教程“心悦龙江麻将有挂吗”详细开挂玩法 您好:心悦龙江麻将有挂吗这款游戏是可以开挂的,软件加微信【添加图中***群】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上

    2026年01月01日
    14317
  • 指定教程“手机麻将软件出售”(揭秘小程序如何让牌变好)

    最新教你“微乐宁夏划水免费房间怎么开挂”(详细开挂教程) 您好,微乐宁夏划水免费房间怎么开挂这款游戏可以开挂的,通过复制添加上方qq群号码搜索添加入群,入群后还可以先与玩家讨论然后安装插件,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且

    2026年01月01日
    19318
  • 必备绝技“开心跑得快辅助软件”(如何来好牌)

    辅助开挂工具“新玉海楼茶苑有没有透视挂”(详细开挂教程) 您好:新玉海楼茶苑有没有透视挂这款游戏是可以开挂的,软件加微信【添加图中***群】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游

    2026年01月03日
    15314
  • 玩家实测“白金岛跑胡子怎么让系统发好牌”作弊(透视)透视辅助

    必看教程“蜀山四川麻将挂先试用后付款!分享用挂教程 您好,蜀山四川麻将挂先试用后付款这款游戏可以开挂的,通过复制添加上方qq群号码搜索添加入群,入群后还可以先与玩家讨论然后安装插件,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看

    2026年01月03日
    17322
  • 指定教程“牵手跑胡子外挂怎么装(揭秘小程序提高胜率)

    万能开挂辅助“欢乐茶坊可以开挂吗”详细开挂玩法认准官方唯一联系方式 客服24小时在线关于!欢乐茶坊可以开挂吗是不是有挂,有没有挂!很多玩家在这款游戏中打牌都会发现很多玩家的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以

    2026年01月04日
    20301
  • 玩家必看攻略!“财神十三张辅助神器”开挂(透视)辅助教程

    万能开挂辅助“约约吉林麻将怎么能赢”最新辅助详细教程亲,约约吉林麻将怎么能赢这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的通过添加客服微

    2026年01月07日
    11300
  • 最新教你“手机麻将做弊器免费”作弊(透视)透视辅助

    最新教你“胡乐白银麻将有没有挂!分享用挂教程认准官方唯一联系方式 客服24小时在线关于!胡乐白银麻将有没有挂是不是有挂,有没有挂!很多玩家在这款游戏中打牌都会发现很多玩家的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以

    2026年01月12日
    21302

发表回复

本站作者才能评论

评论列表(3条)

  • 繡譽自限慣的头像
    繡譽自限慣 2026年01月28日

    我是旋风格的签约作者“繡譽自限慣”

  • 繡譽自限慣
    繡譽自限慣 2026年01月28日

    本文概览:近期关于win32_API里的WM_KEYDOWN和WM_KEYUP的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考,...

  • 繡譽自限慣
    用户012804 2026年01月28日

    文章不错《win32_API里的WM_KEYDOWN和WM_KEYUP》内容很有帮助

客服微信:CCK8674点击复制并跳转微信

联系我们

邮件:旋风格@gmail.com

工作时间:周一至周五,9:30-17:30,节假日休息

旋风格