Profan² 16-Bit ruft 32-Bit-Windows-API

Zugegeben, ganz einfach ist das Problem, 32-Bit auf einer 16-Bit-Version ausführen zu wollen, nicht. Aber es ist nun auch nicht so kompliziert, daß man es nicht lösen könnte.

Roland G. Hülsmann hat dazu ein Beispiel unter Verwendung der "CALL32.DLL" von Peter Goldes (modifiziert durch Rauben Lichtefeld) zur Verfügung gestellt. Es zeigt u.a. sehr anschaulich, wie man eine Verbindung über das Handle eines Fensters definiert.

Die verwendete "CALL32.DLL" ist eine DLL, die das Rufen von 32-Bit-Routinen aus einer 16-Bit-Anwendung heraus ermöglicht. Zur Vorsicht sei hier nur erwähnt, daß dies natürlich erst auf Systemen ab Windows 95 höher funktioniert (funktioniert auch nicht unter "win32s").

Um eine 32-Bit-Funktion in einer 16-Bit Anwendung mit Hilfe der "CALL32.DLL" aufzurufen, sind generell folgende drei Grundschritte durchzuführen:


  1. muß die "CALL32.DLL" selbst declariert werden:

       Def Declare32(3) * "call32.dll","Declare32","&&&","&"
       Def GetDC(2)     * "call32.dll","Call32","&&","&"
       String FName#,0 = "GetDC"
       String FDLL#,0  = "user32"
       String FPar#,0  = "w"
       Let idGetDC&    = Declare32(FName#,FDLL#,FPar#)
       Let dc&         = GetDC(%hwnd, idGetDC&)


  2. muß die Funktion declariert werden, die benutzt werden soll:
    z.B. über Alias von "Call32", der Funktion (hier "gdi32") und dem Argument (hier "ipi")

       Def PolyBezier(4) * "call32.dll","Call32","&#&&","&"
       String FName#,0   = "PolyBezier"
       String FDLL#,0    = "gdi32"
       String FPar#,0    = "ipi"
       Let idPolyBezier& = Declare32(FName#,FDLL#,FPar#)
       let r& = PolyBezier(dc&, points#, 4, idPolyBezier&)


  3. muß die declarierte "CALL32.DLL" unbedingt wieder entladen werden:

       Def FreeCall32IDs(0) * "call32.dll","FreeCall32IDs","","&"
       Def ReleaseDC(3)     * "call32.dll","Call32","&&&","&"
       let r& = ReleaseDC(%hwnd, dc&, idReleaseDC&)
       FreeCall32IDs()

Eine genaue Beschreibung der "CALL32.DLL" und der im einzelnen zu übergebenden Argumente finden Sie in der Datei "abstract.txt" (leider nur in englisch), die im Download enthalten ist.

==> Download

 
 
 
 Kontakt | Übersicht | Komplex-Suche | AGB | Impressum | Datenschutz
Copyright © 2012 Juniors-Workstation. Alle Rechte vorbehalten.
Joomla! ist freie, unter der GNU/GPL-Lizenz veröffentlichte Software.
 
 
     
 
   
Design by windows vista forum and energiesparlampen