static LRESULT WINAPI EditHook(HWND wnd, UINT msg, WPARAM wp, LPARAM lp) { switch (msg) { /* case WM_KEYDOWN: if (!(HIWORD(lp) & KF_REPEAT) && (wp == 'a' || wp =='A') && (GetKeyState(VK_CONTROL) & KF_UP)) { uSendMessage(wnd, EM_SETSEL, 0, -1); return 0; } break;*/ case WM_CHAR: if (!(HIWORD(lp) & KF_REPEAT) && (wp == 1) && (GetKeyState(VK_CONTROL) & KF_UP)) { uSendMessage(wnd, EM_SETSEL, 0, -1); return 0; } break; } return uCallWindowProc(editproc, wnd, msg, wp, lp); }
LRESULT WINAPI menu_extension::hook(HWND wnd,UINT msg,WPARAM wp,LPARAM lp) { switch(msg) { case WM_KILLFOCUS: { m_menu_key_pressed = false; update_menu_acc(); wnd_prev_focus = nullptr; } break; case WM_SETFOCUS: { m_menu_key_pressed = false; show_menu_acc(); wnd_prev_focus=(HWND)wp; } break; case WM_CHAR: if (wp == ' ') return 0; break; case WM_SYSKEYDOWN: case WM_KEYDOWN: { auto lpkeyb = uih::GetKeyboardLParam(lp); if ( (wp == VK_ESCAPE || (wp == VK_F10 && !HIBYTE(GetKeyState(VK_SHIFT))) || wp==VK_MENU) && !lpkeyb.previous_key_state) { update_menu_acc(); if (wp == VK_ESCAPE) { if (wnd_prev_focus && IsWindow(wnd_prev_focus)) SetFocus(wnd_prev_focus); } else { m_menu_key_pressed = true; PostMessage(wnd, TB_SETHOTITEM, -1, 0); } return 0; } else if ( (wp == VK_SPACE) && !lpkeyb.previous_key_state) { HWND wndparent = uFindParentPopup(wnd); if (wndparent) PostMessage(wndparent, WM_SYSKEYDOWN, wp, lp | (1<<29) ); return 0; } } break; case WM_SYSKEYUP: { if (m_menu_key_pressed && (wp==VK_MENU || wp == VK_F10)) { if (wnd_prev_focus && IsWindow(wnd_prev_focus)) SetFocus(wnd_prev_focus); m_menu_key_pressed = false; return 0; } } break; } return uCallWindowProc(menuproc,wnd,msg,wp,lp); }