gpt4 book ai didi

c++ - 编辑控件捕获回车键

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:53 27 4
gpt4 key购买 nike

我有一个编辑控件

HWND hInput = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", 
WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL,
0, 0, 100, 100, hwnd, (HMENU)IDC_MAIN_INPUT, GetModuleHandle(NULL), NULL);

和一个按钮:

HWND hSendButton = CreateWindowEx(WS_EX_CLIENTEDGE,"BUTTON","Send!",
BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,
0,0,0,0,hwnd,(HMENU)IDC_MAIN_SENDBUTTON,GetModuleHandle(NULL),NULL);

有没有办法在编辑控件中输入时查看何时按下 Enter 键并像按下按钮一样发送消息?

我觉得可能

SendMessage(hwnd,WM_COMMAND,(WPARAM)IDC_MAIN_SENDBUTTON,LPARAM(0));

会完成发送消息的工作,但我仍然无法捕获 Enter 键。

提前致谢。

最佳答案

您需要子类化编辑控件并处理 WM_KEYDOWN 消息。如果它是您想要的 key ,请发送消息,否则,让默认的编辑控制程序完成它的工作。

代码如下:

WNDPROC oldEditProc;

LRESULT CALLBACK subEditProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_KEYDOWN:
switch (wParam)
{
case VK_RETURN:
//Do your stuff
break; //or return 0; if you don't want to pass it further to def proc
//If not your key, skip to default:
}
default:
return CallWindowProc(oldEditProc, wnd, msg, wParam, lParam);
}
return 0;
}

void somecreateeditproc()
{
HWND hInput = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "",
WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL,
0, 0, 100, 100, hwnd, (HMENU)IDC_MAIN_INPUT, GetModuleHandle(NULL), NULL);

oldEditProc = (WNDPROC)SetWindowLongPtr(hInput, GWLP_WNDPROC, (LONG_PTR)subEditProc);
}

关于c++ - 编辑控件捕获回车键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15711311/

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