過去幾年,關於文本編輯框(Edit)控件的響應事件,我都是在主程序 while(GetMessage(&messages, NULL, 0, 0)) { ... } 捕獲。
總感覺這種方式讓人感覺不舒服。
今天想給一個 Edit 控件加一下按下【回車】的響應事件,我百度了一下,找到一篇文章:https://blog.csdn.net/gloria__zhang/article/details/7214121
原來只需要通過 LONG OldProc = SetWindowLong(hwnd_edit, GWL_WNDPROC, (LONG)MyEditProc); 就能實現響應事件,我感覺這種實現方式更符合我的要求。
ONG OldProc; LRESULT CALLBACK MyEditProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch( message ) { case WM_LBUTTONDOWN: { //左鍵按下時修改編輯框的文本 SetWindowText(hWnd, "請按任意鍵.."); } break; } //一定要這么加,只處理需要的消息,不需要的返回給父窗口 return CallWindowProc((WNDPROC)OldProc, hWnd, message, wParam, lParam); }
