我有一个编辑控件
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);
Run Code Online (Sandbox Code Playgroud)
和一个按钮:
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);
Run Code Online (Sandbox Code Playgroud)
有没有办法看到在输入编辑控件时按下Enter键并发送按钮按下的消息?
我想也许吧
SendMessage(hwnd,WM_COMMAND,(WPARAM)IDC_MAIN_SENDBUTTON,LPARAM(0));
Run Code Online (Sandbox Code Playgroud)
会做发送消息的工作,但我仍然坚持捕获Enter键.
先感谢您.
W.B*_*.B. 13
您需要子类化编辑控件并处理WM_KEYDOWN消息.如果它是您想要的密钥,请发送消息,否则,让默认的编辑控制程序完成其工作.
代码是这样的:
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10608 次 |
| 最近记录: |