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://www.xfg666.cn/wenzhang/731.html

(84)

文章推荐

  • 保护动植物的宣传语有哪些

    网上有关“保护动植物的宣传语有哪些”话题很是火热,小编也是针对保护动植物的宣传语有哪些寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1、动物是人类亲密的兄弟姐妹,人类是动物信赖的伙伴。 2、绿色的草地多美,小朋友的行为更美。 3、保护鸟类保护野生动物人人有责

    2025年09月16日
    96301
  • 必看教程“雀神麻将外卦神器(透视)”确实可以开挂

    必看教程“雀神麻将外卦神器(透视)”确实可以开挂无需打开直接搜索微信:本司针对手游进行,选择我们的四大理由:1、软件助手是一款功能更加强大的软件!无需打开直接搜索微信:2、自动连接,用户只要开启软件,就会全程后台自动连接程序,无需用户时时盯着软件。3、安全

    2025年11月27日
    52312
  • 重大发现“微乐云南麻将开挂神器”详细开挂玩法

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

    2025年11月29日
    45308
  • 必备绝技“山西扣点点怎么开挂”开挂(透视)辅助教程

    必备绝技“山西扣点点怎么开挂”开挂(透视)辅助教程>>您好:山西扣点点怎么开挂,软件加微信【】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的,

    2025年12月11日
    33309
  • 辅助开挂工具“wepoker有挂吗”最新辅助详细教程

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

    2025年12月14日
    35316
  • 实测分享“微信麻将开通会员会增加胜率吗”(确实有挂)

    最新教你“老友地方麻将开挂神器app下载!分享用挂教程>>您好:老友地方麻将开挂神器app下载,软件加微信【】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游

    2026年01月02日
    21306
  • 黑料!“微信小程序扑克记牌器”(确实有挂)

    最新教你“德州之星有挂吗”开挂(透视)辅助教程无需打开直接搜索微信:本司针对手游进行,选择我们的四大理由:1、软件助手是一款功能更加强大的软件!无需打开直接搜索微信:2、自动连接,用户只要开启软件,就会全程后台自动连接程序,无需用户时时盯着软件。3、安全保

    2026年01月02日
    20307
  • 2分钟秒懂!多乐跑胡子可以作弊么”(详细透视教程)-哔哩哔哩

    辅助开挂工具“兴动麻将挂真的假的”详细开挂教程 您好,兴动麻将挂真的假的这款游戏可以开挂的,通过复制添加上方qq群号码搜索添加入群,入群后还可以先与玩家讨论然后安装插件,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌

    2026年01月02日
    22315
  • 黑料!“手机拼三张辅助器”(确实有挂)

    万能开挂辅助“途游四川麻将怎么才能赢”附开挂脚本详细步骤您好:途游四川麻将怎么才能赢这款游戏可以开挂,确实是有挂的,很多玩家在小程序雀神麻将开挂这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上

    2026年01月08日
    18302
  • 实测分享“手机麻将程序控牌器”详细开挂教程

    必备绝技“微乐北京麻将怎么提高胜率”开挂详细教程 您好,微乐北京麻将怎么提高胜率这款游戏可以开挂的,通过复制添加上方qq群号码搜索添加入群,入群后还可以先与玩家讨论然后安装插件,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其

    2026年01月13日
    19302

发表回复

本站作者才能评论

评论列表(3条)

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

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

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

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

  • 繡譽自限慣
    用户012912 2026年01月29日

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

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

联系我们

邮件:旋风格@gmail.com

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

旋风格