Schnellster Weg, um einen C ++ Win32 Splash Screen zu implementieren

8

Was ist ein einfacher Weg, ein C ++ Win32-Programm zu implementieren ...
- Anzeige eines unkomprimierten 800x600x24 Bitmap-Bildes - In einem Fenster ohne Grenzen (das einzige, was sichtbar ist, ist das Bild)
- das schließt nach zehn Sekunden
- und verwendet keine MFC

    
BeachRunnerFred 03.10.2008, 16:27
quelle

6 Antworten

1

Sie können:

  • Erstellen Sie einen Dialog in Ihrer Ressourcendatei
  • Enthält ein Picture-Steuerelement
  • Legen Sie den Bildsteuerungstyp auf Bitmap
  • fest
  • Erstellen / importieren Sie Ihre Bitmap in der Ressourcendatei und setzen Sie diese Bitmap-ID auf das Bildsteuerelement in Ihrem Dialog
  • Erstellen Sie das Fenster mithilfe von CreateDialogParam
  • Behandle den WM_INITDIALOG, um einen Timer für 10 Sekunden zu setzen (benutze SetTimer)
  • Behandle WM_TIMER, um dein Timer-Ereignis zu erfassen und das Fenster zu zerstören (benutze DestroyWindow)
Dan Cristoloveanu 04.10.2008, 19:42
quelle
6

Wenn Sie auf moderne Versionen von Windows (Windows 2000) und höher abzielen, können Sie die UpdateLayeredWindow Funktion, um beliebige Bitmap anzuzeigen (einschließlich eines mit einem Alpha-Kanal, falls gewünscht).

Ich blogge eine vierteilige Serie darüber, wie man eine C ++ Win32-App schreibt, die das tut Dies. Wenn Sie genau zehn Sekunden warten müssen, um den Begrüßungsbildschirm zu schließen (anstatt bis das Hauptfenster fertig ist), müssen Sie Dan Cristoloveanus vorgeschlagene Technik eines Timers verwenden, der DestroyWindow aufruft.

    
Bradley Grainger 06.10.2008 14:46
quelle
2

Registrieren Sie eine Klasse für das Begrüßungsfenster und erstellen Sie ein Fenster mit diesen Stilen:

  • WS _ POPUPWINDOW: stellt sicher, dass Ihr Fenster keine Beschriftung / sysmenu
  • hat
  • WS _ EX _ TOPMOST: hält den Begrüßungsbildschirm immer am Anfang. Beachten Sie, dass dies ein wenig aufdringlich ist. Es ist möglicherweise besser, das Begrüßungsfenster als untergeordnetes Fenster zu definieren. Möglicherweise müssen Sie jedoch die Z-Reihenfolge manipulieren, um alle anderen Popup-Fenster (wenn Sie eines erstellen) unterhalb des Begrüßungsbildschirms zu behalten.

Verwenden Sie CreateDIBSection, um die Bitmap zu laden. Es sollte einfach sein, da BMP-Dateien im Wesentlichen Dumps von DIB-Strukturen sind. Oder tu, was Ken gesagt hat und benutze LoadImage.

Behandle die WM _ PAINT- oder WM _ ERASEBKGND-Nachricht, um die Bitmap im Fenster zu zeichnen.

Am WM _ CREATE setzen Sie einen Timer von 10 Sekunden und wenn Windows die WM _ TIMER Nachricht sendet, lassen Sie das Fenster sich selbst zerstören.

    
efotinis 03.10.2008 17:12
quelle
2

Der Schlüsselpunkt ist hier, Layered Window zu verwenden.

Sie können mit einem vom Win32-Assistenten generierten Projekt starten und den CreateWindow-Aufruf in CreateWindowEx ändern und festlegen WS_EX_LAYERED als erweiterter Fensterstil und Kombination von WS_POPUP und WS_SYSMENU als Fensterstil. Wenn Sie Ihre Anwendung starten, ist sie unsichtbar. Dann sollten Sie UpdateLayeredWindow verwenden, um Ihr Bild zu malen. Möglicherweise benötigen Sie auch die Funktion AlphaBlend , wenn Sie ein PNG-Bild mit Alpha-Layer verwenden möchten .

Hoffe, das hilft!

    
Serge 03.10.2008 17:57
quelle
1
  • Laden Sie mit LoadImage die Bitmap
  • Verwenden Sie CreateWindowEx, um das Fenster zu erstellen.
  • Erfassen Sie im Fenster proc den WM_PAINT. Verwenden Sie BitBlt, um die Bitmap zu zeichnen.
Ken 03.10.2008 17:08
quelle
1

Es ist eine Win32 API FAQ

Siehe professionelles Win32api-Forum Nachrichten: //194.177.96.26/comp.os.ms-windows.programmer.win32 wo es seit 20 Jahren hunderte Male beantwortet wurde.

    
Michel 04.10.2008 11:55
quelle

Tags und Links