D
Ach, mist nachdem ichs endlich (auf der 4. CD) gefunden hab seh ich, dass ich geschummelt hab (war ja klar ).
Mit der Nachricht WM_NCPAINT müsste es aber gehen:
(Bsp. teils aus der MSDN)
case WM_NCPAINT:
{
DefWindowProc(hwnd, message, wParam, lParam); // wenn du das weglässt musst du wohl den ganzen nicht-Client Bereich selbst zeichen, also auch unten, links und recht den Rand
HDC hdc;
hdc = GetDCEx(hwnd, (HRGN)wParam, DCX_WINDOW|DCX_INTERSECTRGN);
// hier malst du die Titelleiste in deiner Lieblingsfarbe, die Position/Maße bekommst du von GetSystemMetrics()
ReleaseDC(hwnd, hdc);
return 0;
}
Aber:
WM_NCPAINT hab ich schon mal genutzt um in der Titelleiste noch was dazuzuschreiben, dabei ist mir aufgefallen, dass manchmal die Leiste neu gezeichnet wird, ohne dass WM_NCPAINT gesendet wurde, dann fehlt der Text natürlich. Passieren tut dies wenn dein Fenster im Vordergrund ist und du ein anderes anclickst und trotzdem noch die Titelleiste von deinem Fenster sichtbar ist, dann wird diese nämlich grau gemalt und kein WM_NCPAINT gesendet, erst wenn du das nun im Vordergrund befindliche Fenster verschiebst kommt die Nachricht. Umgehen könnte man das, wenn du auch in WM_ACTIVATE oder sonstwas neuzeichnest (weiß nicht genau bei welche Nachricht wirklich dafür verantwortlich ist), kannst ja mal mit Spy++ gucken, was alles kommt und bei diesen mal neuzeichnen, wenns perfekt werden soll.