----------------------------------------------- WM_SYSTIMER MESSAGE January 2024 ----------------------------------------------- CCB 1. THE WM_SYSTIMER MESSAGE: #define WM_SYSTIMER 0x0118 wParam: undocumented lParam: undocumented 2. REFERENCE CODE: The WM_SYSTIMER message is an undocumented message, it is used for caret blink. In fact, there is no the #define WM_SYSTIMER 0x0118 statement in Microsoft Visual C++ source code. Usually, they use the HARDCODE 0x118, for example, // WM_PAINT and WM_SYSTIMER (caret blink) return pMsg->message != WM_PAINT && pMsg->message != 0x0118; It is an undocumented message, so perhaps it can be changed in new Windows. In fact, there are some changes in 64-bit Windows (x64). In x64, Usually, the WindowProc can use the low 32-bit value of wParam and lParam, the high 32-bit value of wParam and lParam is not useful(?). But, for the WM_SYSTIMER message, we MUST use the all 64-bit value of wParam and lParam. If we only use the low 32-bit value of wParam and lParam, the caret will not blink. 3. REFERENCE WINDOWS APIS: LRESULT WINAPI DispatchMessage(_In_ const MSG *lpmsg); BOOL WINAPI GetMessage(_Out_ LPMSG lpMsg, _In_opt_ HWND hWnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax); 4. OTHER: For reference only, there is no guarantees. Any questions or suggestions, please send me an email at ccb2000@163.com. |