编辑:没关系!下面的代码不起作用,但当我从网站上复制并粘贴它时,它工作正常。
我尝试了this网站告诉我的内容,但它没有用。 Anywhay,可能做的很不错。
int editid = 5654;
HWND edit;
//int WINAPI wWinMain
WNDCLASS wc;
wc.lpfnWndProc = WindowProc;
wc.lpszClassName = L"class name";
HWND hwnd = CreateWindowEx(
0,
L"Class name",
L"Copy N Paste",
WS_OVERLAPPEDWINDOW | WS_THICKFRAME | WS_VISIBLE,
CW_USEDEFAULT, 10,
885, 484,
NULL,
NULL,
hInstance,
NULL
);
edit = CreateWindowEx(
0,
L"EDIT",
NULL,
WS_CHILD | WS_VISIBLE | ES_LEFT,
20, 12,
480, 22,
hwnd,
(HMENU)editid,
hInstance,
NULL
);
// LRESULT CALLBACK WindowProc
switch(uMsg) {
case WM_COMMAND:
if(HIWORD(wParam) == EN_CHANGE && LOWORD(wParam)==editid) { // this is
//supposed to detect a change event in the edit control
MessageBox(0, L"Doesnt Work!", L"failure", 0);
}
}
答案 0 :(得分:1)
你可以处理WM_COMMAND,检查你的控件的HWND的lparam,看看你的wparam的HIWORD是不是焦点命令。
case WM_COMMAND:
if((HWND)lparam == hwndmycontrol) {
if(HIWORD(wparam) != EN_SETFOCUS && HIWORD(wparam) != EN_KILLFOCUS) {
//triggered on keypress
}
}
编辑:确保检查wparam是否为IDOK(这意味着用户点击了输入)。
答案 1 :(得分:0)
通知将发送给编辑的父级。您可能正在编辑控件的窗口过程中收听通知。