diff options
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); } |
