Gentegne problem i eVC++
HejJeg har en timer i mit eVC++ program der tæller en variable op hvert 5. sekund. Så kalder jeg PostMessage i timeren for at gentegne vinduet.
Det virker også fint, WM_PAINT bliver postet og kørt igennem men vinduet bliver ikke gentegnet før jeg har eks. flyttet vinduet manuelt.
Hvordan får jeg den til at gentegne vinduet så snart min timer er blevet trigget?
Jeg bruger eVC++ 4.0 og jeg bruger IKKE MFC.
Min testkode:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
int wmId, wmEvent;
PAINTSTRUCT ps;
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_FILE_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_CREATE:
iTimerID = SetTimer(hWnd,1, 5000, NULL);
GetSystemPowerStatusEx(&sps, TRUE);
_stprintf(szText,TEXT("%d"), nValue);
break;
case WM_TIMER:
GetSystemPowerStatusEx(&sps, TRUE);
nValue++;
_stprintf(szText,TEXT("%d"), nValue);
PostMessage(hWnd,WM_PAINT,wParam,lParam);
break;
case WM_PAINT:
SetWindowPos(hWnd,HWND_TOPMOST, 0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
RECT rt;
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rt);
DrawText(hdc, szText, _tcslen(szText), &rt,
DT_SINGLELINE | DT_VCENTER | DT_CENTER);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
KillTimer(hWnd,iTimerID);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}