Podrías intentar mover el HideCaret()
llamar a después del DefSubclassProc()
, ya que en este momento si un mensaje desencadena el careto no será hasta el Siguiente mensaje que está oculto de nuevo.
Además, supongo que el único mensaje que desencadena el careto que se muestra es WM_SETFOCUS
, por lo que es posible que desee probar solo ese mensaje. Por ejemplo,
LRESULT CALLBACK UserInfoProc (HWND hUserInfoWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
LRESULT lRes = DefSubclassProc(hUserInfoWnd, uMsg, wParam, lParam);
if (uMsg == WM_SETFOCUS) // maybe?
HideCaret(hUserInfoWnd);
return lRes;
}