gpt4 book ai didi

c - 如何在 WM_KEYDOWN 中吃 key

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:20 25 4
gpt4 key购买 nike

我在编辑框中处理 WM_KEYDOWN 消息。
我正在处理一堆键,但对于某些键(例如选项卡),我想阻止可显示字符附加到编辑框。

case WM_KEYDOWN:
{
switch(wParam)
{
case VK_TAB:
//handle tab here
//Eat tab key
return 0;
default:
return DefWndProc(hwnd,message,wParam,lParam);
}
}
break;

我可以检测并删除 WM_KEYUP 消息中的制表符,但使用此方法可以明显地在编辑框中添加和删除制表键。

WM_KEYDOWN 中有没有办法吃掉 key ?

最佳答案

您执行此操作的预期方法是处理 WM_GETDLGCODE消息并告诉窗口管理器编辑控件不想处理 TAB 键。 Raymond Chen 在这篇文章中涵盖了这个问题:Those who do not understand the dialog manager are doomed to reimplement it, badly .与雷蒙德的情况一样,这篇文章的标题很有挑衅性。

文章中的代码示例如下所示:

LRESULT CALLBACK SubclassWndProc(
HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
LRESULT lres;
switch (uMsg) {
case WM_GETDLGCODE:
lres = CallWindowProc(...);
lres &= ~DLGC_WANTTAB;
if (lParam &&
((MSG *)lParam)->message == WM_KEYDOWN &&
((MSG *)lParam)->wParam == VK_TAB) {
lres &= ~DLGC_WANTMESSAGE;
}
return lres;
}
return CallWindowProc(...);
}

关于c - 如何在 WM_KEYDOWN 中吃 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16667786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com