-----------------------------------------------
                              WM_SYSTIMER MESSAGE
                                 January 2017
                 -----------------------------------------------
                                    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 e-mail to ccb2000@163.com.