diff options
| author | Jonas Kümmerlin <jonas@kuemmerlin.eu> | 2019-01-11 16:17:48 +0100 |
|---|---|---|
| committer | Jonas Kümmerlin <jonas@kuemmerlin.eu> | 2019-01-11 16:17:48 +0100 |
| commit | 3ecdf8ec97ee6a0b7453f7b4d0c58a84916cfab0 (patch) | |
| tree | 1e113eb67605db65900951c5d55cd8102bf0f178 /alf/alf.cpp | |
| parent | 9279dd93c3997a51b227d3380b4da659fcbdff96 (diff) | |
add pretranslate message hook
Diffstat (limited to 'alf/alf.cpp')
| -rw-r--r-- | alf/alf.cpp | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/alf/alf.cpp b/alf/alf.cpp index 6f8d28a..57059d2 100644 --- a/alf/alf.cpp +++ b/alf/alf.cpp @@ -154,6 +154,10 @@ ALF_DefWindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) return 0; } + if (msg == ALF_WM_PRETRANSLATEMSG) { + return (LRESULT)ALF_PreTranslateMessagePriv(hwnd, priv, (MSG *)lparam); + } + if (msg == WM_COMMAND) { HWND source = (HWND)lparam; WORD code = HIWORD(wparam); @@ -453,6 +457,26 @@ ALF_ApplicationFromWindow(HWND hwnd) return (ALFAPP)SendMessage(hwnd, ALF_WM_GETAPPLICATION, 0, 0); } +BOOL +ALF_PreTranslateMessage(HWND hwnd, MSG *message) +{ + return (BOOL)SendMessage(hwnd, ALF_WM_PRETRANSLATEMSG, 0, (LPARAM)message); +} + +BOOL +ALF_PreTranslateMessagePriv(HWND win, ALFWindowPriv *priv, MSG *message) +{ + BOOL ret = FALSE; + + if (priv->vtbl->pretranslatemessage) + ret = priv->vtbl->pretranslatemessage(priv->closure, win, message); + + if (!ret) + ret = IsDialogMessage(win, message); + + return ret; +} + int ALF_ShowModal(HWND win) { @@ -467,7 +491,7 @@ ALF_ShowModal(HWND win) // TODO: call application message hooks // TODO: call preprocess message hook - if (!IsDialogMessage(win, &msg)) { + if (!ALF_PreTranslateMessage(win, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } |
