Winapi??



  • HALLO Forum!

    Ich hab keine Programmierfrage aber ich glaube es passt hier trotzdem rein! Ich programmiere mit dem Visual C++ 6.0 in Winapi und man hört sehr viel über .NET und Windows Forms und so weiter! Ich hab mir jetzt mal Visual Studio 2005 Express Edition installiert und so ein WinForms Projekt erzeugt, das sieht ja ganz anders aus als die normalen Winapi Fenster Codes.

    Ist die .NET Umgebung etwas komplett neues oder funktioniert es immer noch mit Nachrichtenschleifen und Nachrichten intern und ist nur so abstrahiert, daß der Programmierer davon nichts mitbekommen muss? Oder wird sich in den kommenden Windows versionen auch intern dieses ganze konzept komplett ändern, wie man es kennt??

    GRUß
    Killian



  • also du kannst sogar WinAPI Funktionen per DllImport nutzen.
    Im uebrigen werden die Aufruf aus solchen und ähnlichen Framworks die auf Microsoft-Systemen laufen auf niedrigster Systemebne eh wieder auf WinAPI-Aufruf umgebrochen!!!

    Aber der Vorteil ist bei den Framworks eben das man versucht hat was sinnvoll und sinngemäss zusammengehört, wird durch entsprechend Wrapper-Klassen, Wrappermethoden zusammengfuehrt.

    Wenn man als Neuling in WinAPI kommt und man sieht was man schon tun muss
    um per SendMessage ne Nachricht in ne TextBox zu bringen anzuhängen oder abzuschneiden. Errscheint das in der ersten Zeit geradezu konfus.

    im .NET ghts einfach per

    int i = 0;
    textBox1.Text = i.ToString();
    

    im Winapi

    int i = 0
    char cbuff[256];
    sprintf(cbuff,"%i",i);
    SendMessage(hwndDlgItem,WM_SETTEXT,(WPARAM)WM_USER,(LPARAM)cbuff);
    

    muss ich mir alles so zusammenbasteln und es werden Systemaufruf von Osten Süden Westen Norden gebraucht die auf dem ersten Blick nix direkt miteinander zu tun haben! Und diesees man kann es Problem nennen oder nicht zieht sich wie ein roter Faden durch WinAPI!

    Im .NET haben sich die Entwickler nen Kopf gmacht Ordnung versucht reinzubringen und manches konnte man dann unter einen Hut bringen. 🙂



  • Ich meine und dein Visual C++ hat ja die MFC ist auch ein Framwork und spannt sich als Vereinfachung der reinen WinAPI eben mittels Kapselung um die WinAPI.

    Aber nichts desto trotz es ist gut wenn man Kenntnisse auf anderen Gebieten hat.

    Das Klassengebilde des .NET bringt nicht zu allem Lösungsansätze mit.
    Wenn man weiss wie mans in WinAPI lösen würde hat man eben die Möglichkeit.
    Direkte Systemaufruf der WinAPI durch DllImport ins .NET zu bringen und man baut die Lösung ebn dann damit in .NET nach so wie man es in reinen C oder C++
    mittels der reine WinAPI gemacht hätte.

    [DllImport("user32.dll", EntryPoint="SendMessage")]
    public static extern int SendMessage(IntPtr hWnd, uint Msg, uint wParam,
            [MarshalAs(UnmanagedType.FunctionPtr)] CompareFunc compareFunc);
    
    [DllImport("user32.dll",EntryPoint="FindWindow")]
    private static extern int FindWindow(string _ClassName, string _WindowName);
    
    [DllImport ("user32.dll")]
    public static extern IntPtr GetWindow( IntPtr handle, int cmd );
    
    private void button1_Click(object sender, System.EventArgs e)
    {
       // const int LVA_DEFAULT = 0x0000; 
       const int LVM_FIRST = 0x1000;
    
       // ListView messages 
       // const int LVM_ARRANGE = (LVM_FIRST + 22); 
       const int LVM_SORTITEMS = (LVM_FIRST + 48); 
       const int GW_CHILD = 5; 
    
       int tmp = FindWindow( "ProgMan", null ); 
       IntPtr handle = new IntPtr(tmp); 
       handle = GetWindow( handle, GW_CHILD ); 
       handle = GetWindow( handle, GW_CHILD ); 
    
       CompareFunc f = new CompareFunc(Compare); 
       SendMessage( handle, LVM_SORTITEMS, 0, f );
    }
    

    jo echt schoen sowas 👍
    Sicherlich muss man sich ins Framework auch einarbeiten
    Aber wenn man viel ueber den Tellerand schaut kann man schon sagen am Ende ist man in einigen Fällen mit nem Framwork vielleicht produktiver.

    Aber eine hardcore Guru in WinAPI wird es nathuerlich wenig jucken.
    Leute mit genug Erfahrung arbeiten sich wenn Sie wollen leicht auch in andere Sachen rein oder satteln erst garnicht um.

    Ich will ja auch keine zu C# bekehren nur weil ich gerne damit rumfrickele....
    allerdings ist es schön auch von anderen Sachen was zu wissen 😃



  • Killian schrieb:

    Ist die .NET Umgebung etwas komplett neues oder funktioniert es immer noch mit Nachrichtenschleifen und Nachrichten intern und ist nur so abstrahiert, daß der Programmierer davon nichts mitbekommen muss?

    Das letztere ist der Fall. Es ist sowas wie MFC nur für managed Code.



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum WinAPI in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo

    Wird das immer so bleiben oder wird nach Windows Vista irgendwann alles nur noch mit .NET funktionieren ? Wird man immer auch in normalem C/C++ Programme als "unmanaged" erstellen können, auch wenn es mehr aufwand macht?



  • Mit Vista wird sich da noch nicht viel ändern. Es gibt aber jetzt schon immer mehr Schnittstellen, die es z.B. *nur* als managed-Version gibt (z.B. Indigo).

    MS bastelt auch schon an einem reinen managed-OS (Stichwort Singularity).

    Also, ich würde schon davon ausgehen, dass es mittelfristig mehr oder nur noch in Richtung .NET gehen wird.


Anmelden zum Antworten