tu problema no es con WM_LBUTTONDOWN,
el problema es con WM_PAINT,
el poco tiempo que yo use la winapi, en el WM_PAINT tenia algo asi:
Código:
PAINTSTRUCT ps;
// algun codigo....
case WM_PAINT: BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
break;
// mas codigo....
los cuales son metodos de la winapi.
y ya luego en el MainLoop, checaba si habia algun mensaje asi:
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
si no habia, mandaba a llamar a mi funcion de dibujo, que es donde Yo pondria tu codigo para dibujar
Código:
if (dibujar) {
// codigo...
}
Tal vez existan varios metodos, pero ese es el que yo usaba y me funcionaba.
Lo que no estoy seguro, es si tu codigo para dibujar sea correcto ya que no recuerdo mucho de la sintaxis/metodos de la winapi..... ademas, me parece que la instruccion:
ReleaseDC (hwnd, hdc);
no deberia de ir ahi, si no cuando ya terminas el programa.
Si eso no resuelve tu problema, tal vez alguien que recuerde mejor esto te pueda ayudar...
saludos,