da ich keine Möglichkeit gefunden habe mit QT die Windows Titlebar (oder Caption Bar) zu verändern habe ich mir selbst was im Internet zusammengesucht, was mit einem normalen Win32 Fenster auch ganz gut klappt.
Hierbei wird das PaintEvent abgefangen, und mit BitBlt() noch ein Bild zum Fenster hinzugepaintet.
Das was ich bei nem "normalen" Fenster in der CallBack Funktion unter WM_PAINT machen würde habe ich jetzt in einer Funktion gemacht die das QPaint Event überschreibt. Problem ist dass das Bild jetzt in jedes Widget gepaintet wird, also auch auf jeden Button etc. Gibts da eine möglichkeit den Event nur vom MainWindow abzufangen ?
Vieleicht gibts aber auch eine Möglichkeit die Titlebar mit Qt eigenen Mitteln zu modifizieren das wär mir noch viel lieber
Code: Alles auswählen
MainWindow::MainWindow(QWidget* parent /* = 0 */, Qt::WindowFlags flags, HINSTANCE hInstance)
: QMainWindow(parent, flags)
{
setupUI(this);
HBITMAP hSkinBmp = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_SKIN));
dcSkin = CreateCompatibleDC(0);
HBITMAP hOldBmp = (HBITMAP)SelectObject(dcSkin, hSkinBmp);
}
Code: Alles auswählen
void MainWindow::paintEvent( QPaintEvent* event ) {
HWND hWnd = this->winId();
PAINTSTRUCT ps;
// blit the skin
BitBlt(ps.hdc, 0,0,320,240, dcSkin, 0,0, SRCCOPY);
EndPaint(hWnd,&ps);
}