Entwickler-Ecke

Windows API - Fragen: Umsteigen von VB6.0 nach Delphi5


check_it_now - Mo 16.12.02 16:03
Titel: Fragen: Umsteigen von VB6.0 nach Delphi5
hallo,

zur zeit programmiere ich mit VB6.0 - und denke darueber nach auf delphi5 umzusteigen. um dies mehr oder weniger erfolgreich zu machen habe ich ein existierendes VB6 program und versuche dieses nach delphi zu "transformieren". dabei taucht eine frage auf die ich nicht loesen kann

das einbinden von existierenden (user32.dll) funktionen will mir einfach nicht gelingen.

in VB sieht der code so aus

Decalration:

Public Const WM_CLOSE = &H10&

Public Declare Function PostMessage Lib "USER32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long


anwendung

PostMessage Me.hwnd, WM_CLOSE, 0&, 0&

kann mir jemand sagen an welcher stelle ich diese declarationen machen muss. auch das aufrufen der funktion selber (sie schliesst die anwendung) ist mir nicht ganz klar.

die funtion schliesst die aktuelle anwendung (geht bei delphi auch mit close) aber es soll ja nur ein beispiel fuer die einbindung dieser dinge sein.

danke im voraus

(16.12. 15:18 Tino) Titel geändert.


Klabautermann - Mo 16.12.02 16:37

Hallo,

meistens erstellt man für DLLs seperate units zum Kapzeln der Funktionen. Bevor ich hier nocheinmal erkläre wie genau das funktioniert, gebe ich dir lieber Adressen zu entsprechenden Tutorials ;).

http://www.auq.de/viewtopic.php?t=102
http://www.delphi-treff.de/content/tutorials/dllbinding
http://www.tutorials.delphi-source.de/dlls

Ich denke das sollte vollständiger und besser aufbereitet sein als alles was ich hier auf die Schnelle Tippen kann.

Also viel Spass damit.

Klabautermann


check_it_now - Mi 18.12.02 10:19

die referenzen hatte ich schon gelesen aber leider geht man da nur auf eigendefinierte dll's ein. das ist aber momentan nicht mein prob.

also nochmal zum teil habe ich das geloest. na ja zumindest bekomme ich keine fehlermeldung mehr bei der declaration. die PostMessage decalration steht in der windows.pas. Diese Declaration konnte ich mir also sparen.

jedoch ist mein prob ist nach wie vor der aufruf der function. speziell der parameter

"ME.hwnd" will mir unter delphi nicht gelingen.
unter vb ist mit Me.hwnd die application gemeint. man koennte auch fuer Me den namen der zu beendenden Mainform benutzen.

PostMessage Me.hwnd, WM_CLOSE, 0&, 0&

wenn ich nun unter delphi schreibe

mit dem formnamen "frm_test"

PostMessage (frm_test.hwnd, WM_CLOSE, 0&, 0&);

bekomme ich die errormeldung

Incompatible Typen HWND und Tfrm_test

aender ich frm_test nach Tfrm_test heisst die errormeldung

Incompatible Typen HWND und Class reference

wer kann mir mit einem bsp helfen. mit der beschriebenen "grauen theorie" komme ich zur zeit nicht weiter.


LCS - Mi 18.12.02 10:24

Hi
in Delphi müsste das heissen:

Quelltext
1:
PostMessage(Application.Handle, WM_CLOSE,  $0, $0);                    



Gruss Lothar

So ganz nebenbei, kommt mir dein Username ziemlich bekannt vor. Fährst du vielleicht ne Hornet?


check_it_now - Mi 18.12.02 10:34

oh oh komando zurueck :-)

habe es gerade herausgefunden.

PostMessage (Application.Handle, WM_CLOSE, 0 , 0 ) ist das richtige commando

oh das war "kompliziert" trotzdem danke fuer die bemuehungen


check_it_now - Mi 18.12.02 10:35

sorry hatte deine antwort nicht gelesen. aber genau das ist es. danke danke danke.

statt application geht auch der fenstername.

also nochmal danke


check_it_now - Mi 18.12.02 15:11

@lothar,

>So ganz nebenbei, kommt mir dein Username ziemlich bekannt vor. Fährst du vielleicht ne Hornet?

yes sir, ne blaue 9er

ich hatte deinen beitrag noch nicht ganz zu ende gelesen aber dein kuerzel war mir auch irgend wie bekannt. glaube aber du bist mehr auf der andern hornetseite activ :-)

momentan kann ich mich noch nicht so richtig fuer delphi begeistern. ich habe starke syntaktische probleme :-( mit dieser programiersprache.
na ja mal sehen wenn ich noch 2 wochen durchhalte und meine questions for runnaways beantwortet werden sehe ich das eventuel anders.

als denne bis zur naechsten frage


alexschultze - Fr 03.01.03 23:31

hey, klingt interessant, aber ich raffe nix :)
Was ist ne Hornet? Nen Auto? Wie kommst du über den Nick drauf?

Du arbeitest nett zufällig bei der NSA? *ggg*


Meine Meinung zum Thema:
DELPHI RULEZ! Ich persönlich habe mich (seeehr) oberflächlich mal in VB als auch C++ umgesehen, und es gab nichts das mich begeistert hätte.
Mein Argument ist immer: Delphi ist einfach, und ist nicht umsonst RAD (Rapid Application Developement) - kleine Anwendungen sind sehr fix gemacht.

(kann nicht genau sagen wie es in VB und C dabei aussieht).
Ich persönlich habe auf Empfehlung mit Delphi angefangen, und kann jetzt gar nicht mehr aufhören :)

Dafür ist das Forum ja da -> learn it or leave it :)
(cooler spontaner Spruch. Sowas müsste mir öfter mal einfallen *g*)


Delete - Sa 04.01.03 05:48


Quelltext
1:
PostMessage (Application.Handle, WM_CLOSE, 0 , 0 );                    

Etwas umständlich oder schreibst du ohne die VCL? Ein einfaches und Furz trockenes

Quelltext
1:
close;                    

würde es auch tun.


OregonGhost - Sa 04.01.03 17:23

check_it_now hat folgendes geschrieben:

die funtion schliesst die aktuelle anwendung (geht bei delphi auch mit close) aber es soll ja nur ein beispiel fuer die einbindung dieser dinge sein.

Wer lesen und schreiben kann ist klar im Vorteil :roll:


check_it_now - Di 07.01.03 11:05

@alexschultze

hornet - da ist ein motorrad aeh was sage ich da . das ist DAS motorrad.

ne bei der NASA arbeite ich nicht.

so noch fragen??