Autor Beitrag
thebe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP Home
D6 Enterprise
BeitragVerfasst: Di 27.04.04 21:57 
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
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
while(GetMessage(msg, 000)) 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
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
hWnd := CreateWindow(
      '<someClassName>',       // window class name
      '<someWindowCaption>',       // window caption
      WS_MAXIMIZE or WS_VISIBLE,    // window style
      Integer(0), // initial x position
      Integer(0), // initial y position
      GetSystemMetrics(SM_CXFULLSCREEN), // initial x size
      GetSystemMetrics(SM_CYFULLSCREEN), // initial y size
      0,                      // parent window handle
      0,                      // window menu handle
      hInstance,              // program instance handle
      nil);                   // creation parameters
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 user profile iconPeter Lustig (09:50, 28.04.2004): Code- durch Delphi-Tags ersetzt


Zuletzt bearbeitet von thebe am Mi 28.04.04 23:44, insgesamt 1-mal bearbeitet
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: Di 27.04.04 22:25 
zu 1. Ich hab mal ne Klasse gemacht, die ein nonVCL-Fenster erzeugt. Da ist auch ein OnIdle-Event drin.
Link zur .pas: www.trabi2003.de/stuff/appbase/appbase.pas
Readme: www.trabi2003.de/stuff/appbase/readme.txt


Besorg dir außerdem das PSDK für die Fragen zu konkreten Funktionen der WinAPI.

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
thebe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP Home
D6 Enterprise
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
thebe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP Home
D6 Enterprise
BeitragVerfasst: Mi 28.04.04 11:44 
Hat Luckie schon angesprochen und werde ich demnächst so handhaben.

Entschuldige bitte.
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 28.04.04 16:04 
Vielleicht helfen SM_CXSCREEN bzw. SM_CYSCREEN?
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: Mi 28.04.04 16:40 
Falls dus noch nicht gefunden hast auf der MS-Seite: Probier mal den Link: www.microsoft.com/ms...dkupdate/default.htm

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
thebe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP Home
D6 Enterprise
BeitragVerfasst: 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