?
Ich meinte im letzten Beitrag natürlich WM_PAINT
Ich habe es jetzt einigermaßen hinbekommen, bin aber noch nicht ganz zufrieden.
void infoOut(TCHAR *info)
{
wcsncpy(szInfo, info, MAX_LOADSTRING);
HDC hDC = GetWindowDC(infoHwnd);
TextOut(hDC, 0, 0, szInfo, wcsnlen(szInfo, MAX_LOADSTRING));
ReleaseDC(infoHwnd, hDC);
}
szInfo ist golbal deklariert, sozusagen mein Puffer den ich auch im Falle eines WM_PAINT ausgebe (Falls das Fenster überdeckt oder vergrössert/verkleinert wird).
Das Problem ist, ich bekomme mit GetWindowDC den absoluten Ursprung des Fensters, schreibe meinen Text also in dem Fall in die Titelleiste. Das selbe TextOut, was bei WM_PAINT in der Callbackfunktion ausgelöst wird, setzt den Text aber in den eigentlichen Fensterbereich, was ja auch besser ist.
Das geschieht so...
LRESULT CALLBACK infoWndProc(HWND infoHwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case ...
case WM_PAINT:
hdc = BeginPaint(infoHwnd, &ps);
TextOut(hdc, 0, 0, szInfo, wcsnlen(szInfo, MAX_LOADSTRING));
EndPaint(infoHwnd, &ps);
break;
case ...
}
return 0;
}
Nun habe ich versucht auch in meiner Funktion "infoOut" mit BeginPaint zu arbeiten. infoHwnd habe ich global deklariert, ist also auch dieser Funktion bekannt.
void infoOut(TCHAR *info)
{
PAINTSTRUCT ps;
wcsncpy(szInfo, info, MAX_LOADSTRING);
HDC hdc = BeginPaint(infoHwnd, &ps);
TextOut(hdc, 0, 0, szInfo, wcsnlen(szInfo, MAX_LOADSTRING));
EndPaint(infoHwnd, &ps);
UpdateWindow(infoHwnd);
}
Da passiert aber leider garnichts. Hat jemand eine Idee.