Die WIN API Funktionen



  • Hallo ich hab gelesen das die WIN API Funktionen in Assembler und C++ geschrieben worden sind.

    Kann man sich irgendwo anschauen wie Microsoft z.b. eine MessageBox in C++ oder Assembler geschrieben hat ?

    Weil mit standart C++ kann man doch eigentlich keine MessageBox machen und bei Assembler da Includet man ja auch so eine Datei welche die entsprechenden Funktionen enhällt.



  • WinAPI-Funktionen sind meistens in C geschrieben. Sofern Du keinen Quelltext von Windows zur Verfügung hast, kannst Du Dir mal die WINE-Implementierung anschauen. Dürfte dem originalen Code recht ähnlich sein.



  • die winapi wurde in c geschrieben. Nur teile des Kernels mussten in assembler verfasst werden. Leider steht der quellcode der winapi nicht zur verfügung, denn die winapi gehört ja zu windows. Aber die funktion dürfte so gelöst sein das sie mit wiederum anderen winapi funktionen den dialog dynamisch erzeugt. Die Funktionen zum erzeugen eines Dialogs an sich sind dann eben wohl low-level zeichenoperationen.



  • Hi oops,
    zunächst einmal gehe ich davon aus, Du sprichst aus der Sicht eines Programmierers, der eine Applikation für Windows-Betriebssysteme entwickeln möchte.
    (Und nicht etwa Windows-OS nachbilden möchtest *uff* )

    Grundsätzliches: Mit welcher Programmiersprache die Win-API Funktionen geschrieben sind, ist völlig egal für einen Applikationsprogrammierer.

    Nach Deiner Auffassung könnten alle Applikationen gar nicht laufen, die z.B. mit Visual Basic, Delphi, Pascal, C#, Java, ... programmiert sind.

    oops schrieb:

    Weil mit stan**** C++ kann man doch eigentlich keine MessageBox machen

    Das ist blanker Unsinn!
    Für jede Programmiersprache (einschließlich Assembler) mußt Du grundsätzlich eine Include-Datei mit den Aufrufkonventionen für Win-API Funktionen einbinden!

    Für die Programmiersprache C (und deren Abwandlungen Standard-C, ISO-C, C++, C#, Cx0x, ...) wird gewöhnlich

    #include <windows.h>
    

    im Sourccode eingefügt.

    Ich denke mal, das ist alles gesagt nach Deiner Fragestellung
    Martin



  • Also könnte man mit reinem Assembler ohne irgendwelche Include Geschichten z.b. eine MessageBox Programmiern?

    Weil hier wird ja auch so einiges Includet und ich kannte das bisher auch nur mit den Includes.

    Ich würde halt gerne mal so die Hintergründe davon verstehen ...

    http://win32assembly.online.fr/tut2.html

    .386 
    .model flat,stdcall 
    option casemap:none 
    include \masm32\include\windows.inc 
    include \masm32\include\kernel32.inc 
    includelib \masm32\lib\kernel32.lib 
    include \masm32\include\user32.inc 
    includelib \masm32\lib\user32.lib 
    
    .data 
    MsgBoxCaption  db "Iczelion Tutorial No.2",0 
    MsgBoxText       db "Win32 Assembly is Great!",0 
    
    .code 
    start: 
          invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK 
           invoke ExitProcess, NULL 
    end start
    


  • Du könntest Syscalls benutzen, dann könntest du ewtas in Assembler hinbekommen. Aber ich glaube nicht, dass es einen Syscall für eine Messagebox gibt 😃
    Aber mit mehreren könnte so etwas möglich sein. (Denke ich)



  • Kann das hier n mod vielleicht mal zum Nobuto hinschieben in die Assembler Ecke ?

    Oder soll ich da n neuen Thread aufmachen?


Anmelden zum Antworten