Entwickler-Ecke
Windows API - Einige Fragen bzgl. Portierung VCL -> nonVCL [done]
thebe - Di 27.04.04 21:57
Titel: Einige Fragen bzgl. Portierung VCL -> nonVCL [done]
Moin
aus gegebenem Anlass (GDI+) will ich mich mehr mit nonVCL Programmen in Delphi beschäftigen und hab dazu dann euch einige Dinge wo ich nicht weiß wie ich die unter nonVCL realisier.
Also:
1. Wie kann ich bei nonVCL nen OnIdle Event setzen ? Ich habs mit
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| while(GetMessage(msg, 0, 0, 0)) do begin TranslateMessage(msg); DispatchMessage(msg); OnIdle(hWnd); end; |
probiert, aber das wird nichts. Da reagiert das Prog nicht drauf. Die OnIdle procedure ruft die gleiche procedure wie beim zeichnen auf, also entweder wird die OnIdle procedure nicht ausgeführt, oder aber die Fenster Graphik wird nicht aktualisiert. Falls letzteres, wie kann ich das realisieren (ohne InvalidateRect, da das Ding zum FLimmer Konzet führt)?
2. Wie krieg ich wie bei den MouseUp/Down Events der VCL die Shift States der Tasten raus, sprich ob Ctrl, Alt etc. gedrückt sind ?
3. Wenn ich das Fenster mittels
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| hWnd := CreateWindow( '<someClassName>', '<someWindowCaption>', WS_MAXIMIZE or WS_VISIBLE, Integer(0), Integer(0), GetSystemMetrics(SM_CXFULLSCREEN), GetSystemMetrics(SM_CYFULLSCREEN), 0, 0, hInstance, nil); |
erstelle, dann krieg ich zwar nen Fenster was so groß wie der Bildschirm ist, aber ich hab immer noch die Titel Leiste oben und den Fenster Rahmen, den will ich aber gar nicht haben. Ich habs auch schon ohne WS_MAXIMIZE und WS_VISIBLE ausprobiert, aber leider nichts gefunden was das sein könnte.. Wie kann ich diese blöde Titelleiste / Rahmen verstecken ?
4. uhm.. kA was das noch war, ist mir entfallen während ich geschrieben hab. Aber ich komme wieder :)
Schon mal vielen Dank im Vorraus für die Hilfe.
- Thebe
Moderiert von
Peter Lustig (09:50, 28.04.2004): Code- durch Delphi-Tags ersetzt
Delete - Di 27.04.04 22:23
Es wäre für uns einfachher für jede Frage einen eigenen Thread zu erstellen, jetzt geht es hier drunter und drüber.
Zu 3.) Versuch mal WS_POPUP als Fensterstil.
thebe - Mi 28.04.04 08:55
bei deinem Link kommt ne Microschufft Seite mit Gesülze à la "Das Dokument ist weg". Werd ich mal die MS Seite nach der PSDK durchforsten müssen.
Aber vielen Dank für die Klasse, da hab ich einiges draus lernen können :idea:
zu 1.) Das Idle Event hab ich nun, aber der Bildschirm wird nicht erneuert wenn ich dem Ding sage zu Zeichnen. Ich muss immer nen Invalidate Rect ausführen, ansonsten mag das Ding mich nit. Hat jemand ne bessere Idee ?
zu 2.) Hat sich erledigt, hät ich ja selbst drauf kommen können daß ich die Tasten mit eigenem WM_KEYUP u. WM_KEYDOWN Behandlungen in nen Set reinschreiben kann :roll:
zu 3.) Mit WS_POPUP funktioniert das, nur krieg ich bei GetSystemMetrics(SM_CYFULLSCREEN) die Höhe des Bildschirmes minus Taskbar Höhe raus. Genau das gleiche bei solchen Spielereien wie ICQ. Das wird die Bildschirmbreite minus ICQ Breite angegeben und das Programm ist beim Vollbildmodus nicht wirklich im Vollbild. Hat jemand ne Alternative zu GetSystemMetrics(SM_CYFULLSCREEN) die sowas nicht mitliefert ?
Danke nochmals
- Thebe
Christian S. - Mi 28.04.04 09:56
Hallo!
Bitte demnächst nur eine Frage pro Thread. Sonst weiß hinterher niemand, worum es in dem Thread eigentlich geht.
MfG
Peter
thebe - Mi 28.04.04 11:44
Hat Luckie schon angesprochen und werde ich demnächst so handhaben.
Entschuldige bitte.
Anonymous - Mi 28.04.04 16:04
Vielleicht helfen SM_CXSCREEN bzw. SM_CYSCREEN?
thebe - Mi 28.04.04 23:44
@obbschtkuche: Das war genau das was ich gesucht habe, danke Dir.
@UC-Chewie: Hatte den Link zwar schon (nach einigem Durchrattern der M$ Seite *brr*) aber trotzdem danke :)
So, die Fragen hätten sich erledigt, ich werd wohl mit dem InvalidateRect leben müssen. Besser als gar nichts schätz ich mal. Danke nochmals für eure Hilfe.
- Thebe
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!