Also, ich hab jetzt halt doch mal per Trial-and-Error rausgefunden, dass:
1. sich das HDC bei jedem Aufruf der Schliefe verändert.
2. es aber auch funktioniert, wenn man das HDC static macht, siehe folgender Code:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HDC hdc = GetDC(hwnd);
RECT clientrect;
GetClientRect(hwnd, &clientrect);
// Nachrichten switchen
//-------------------
switch(message)
{
case WM_CHAR:
{
TextOut(hdc, 100, 100, L"Hallo Hier Text!",100);
Sleep(500);
FillRect(hdc, &clientrect, CreateSolidBrush(RGB(0,255,255)));
Sleep(100);
FillRect(hdc, &clientrect, CreateSolidBrush(RGB(255,255,255)));
}break;
case WM_DESTROY:
{
// Anfrage zum Beenden senden
//---------------------------
PostQuitMessage(0);
return 0;
}
}
// Den Rest der Standardwindowprozedur überlassen
//-----------------------------------------------
return DefWindowProc(hwnd, message, wParam, lParam);
}
|
Ich werde jetzt ein Mittelding nehmen: Ich lasse am Anfang jedes Durchlaufs der Fenster-Prozedur das HDC feststellen und nutze es für die ganze Schleife. So kann es sich bei jedem Durchlauf ändern (vielleicht ist es ja wichtig) und ich muss dennoch nicht vor jeder Zeichenoperation mir eine HDC holen. Oder spricht etwas gegen diesesn Ansatz?