-----------------------------------------------
WM_SYSTIMER MESSAGE
January 2026
-----------------------------------------------
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.
|