winapi/64bit/comppiler???



  • hallo zusammen,
    ich programmiere schon seit einiger zeit C und möchte nun in die winapi einsteigen. Nun heißt ja die winapi auch win32-api, hat das irgendwas mit dem betriebssystem zu tun. Muss ich da irgwas anderst machen, denn ich hab 64bit?? Und welchen Compiler verwende ich dazu, in dem tutorial das ich grade angefangen habe, steht ich soll den visual c++ compiler verwenden. Allerdings bring ich schon das erste beispiel nicht zum laufen. Muss ich da eine bestimmte datei anlegen und den code reinschreiben oder wie funktioniert das??

    kurz und bündig, ich hab keine Ahnung auf dem Gebiet...



  • Der Name ist AFAIK nur noch historisch so ausgelegt, die Win32-API kommt mit Win16 (DOS) und Win32/64 (NT) klar.

    Allerdings bring ich schon das erste beispiel nicht zum laufen.

    Das ist nicht sehr informativ. Dann schau nach Fehlern. 😮



  • Du kannst für 64-Bit entweder das PSDK verwenden oder VS ab Standard (oder was es doch Prof.?).

    Und Win32 ist sowohl x86/x64 und IA64 😉



  • von dem was du sagts versteh ich leider nur bahnhof, muss ich das psdk oder vs noch zusätlich installieren, oder ist das automatisch dabei?? und für was genau sind die beiden??

    ich habe folgenden code als .c datei gespeichert um ein fenster zu erstellen:

    #include <windows.h>
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    LPCSTR lpszAppName = _T("AppName");
    LPCSTR lpszTitle   = _T("Meine erste Applikation");
    
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                         PSTR szCmdLine, int iCmdShow)
    {
        HWND       hWnd;
        MSG        msg;
        WNDCLASSEX wc;
    
        wc.cbSize        =  sizeof(WNDCLASSEX);
        wc.style         =  CS_HREDRAW | CS_VREDRAW;
        wc.lpfnWndProc   =  WndProc;
        wc.cbClsExtra    =  0;
        wc.cbWndExtra    =  0;
        wc.hInstance     =  hInstance;
        wc.hCursor       =  LoadCursor(NULL,IDC_ARROW);
        wc.hIcon         =  LoadIcon(NULL, IDI_APPLICATION);
        wc.hbrBackground =  (HBRUSH)GetStockObject(WHITE_BRUSH);
        wc.lpszClassName =  lpszAppName;
        wc.lpszMenuName  =  lpszAppName;
        wc.hIconSm       =  LoadIcon(NULL, IDI_APPLICATION);
    
        if( RegisterClassEx(&wc) == 0)
            return 0;
    
        hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,
                              lpszAppName,
                              lpszTitle,
                              WS_OVERLAPPEDWINDOW,
                              0,
                              0,
                              CW_USEDEFAULT,
                              CW_USEDEFAULT,
                              NULL,
                              NULL,
                              hInstance,
                              NULL);
    
        if( hWnd == NULL)
            return 0;
    
        ShowWindow(hWnd, iCmdShow);
        UpdateWindow(hWnd);
    
        while (GetMessage(&msg, NULL, 0, 0) > 0)
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        return msg.wParam;
    }
    
    LRESULT CALLBACK WndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam)
    {
        switch (umsg)
        {
            case WM_DESTROY:
            {
                PostQuitMessage(0);
                return 0;
            }
        }
        return DefWindowProc(hWnd, umsg, wParam, lParam);
    }
    

    ist das richtig??
    Allerdings gibt es beim compilieren einen Fehler, den ich nicht beheben kann. Außerdem gibt visual c++ folgendes aus: Dieses Projekt ist veraltet: Programmname - debug win32. Das wird allerdings bei jedem c programm das ich schreibe und mit visual c++ compiliere angezeigt.



  • > Allerdings gibt es beim compilieren einen Fehler, den ich nicht beheben kann

    Toll! Sag doch gleich "Es klappt nicht." 😮

    Ich habe ihn aus Gnade mal versucht zu kompilieren. Scheitert's am _T()-Makro? Dann nimm TEXT(). Oder lass es mit Unicode erst mal, brauchst du zu Übungszwecken eh nicht.



  • das war ein Quellcode zum kopieren, nur das man mal sieht das etwas läuft. Ja du hattest Recht, jetzt läufts, allerdings auch nur unter visual c++ 🙄 , code::blocks sagt: undefined reference to '_GetStockObjekt@04' ^^. Was ist besser, code::blocks oder visual c++??



  • nya code::blocks is für n00bs, visual studio is für pr0s, das sind so die gängigen meinungen unter c0dern..



  • neo47 schrieb:

    das war ein Quellcode zum kopieren, nur das man mal sieht das etwas läuft. Ja du hattest Recht, jetzt läufts, allerdings auch nur unter visual c++ 🙄 , code::blocks sagt: undefined reference to '_GetStockObjekt@04' ^^. Was ist besser, code::blocks oder visual c++??

    ah jo musst du wohl in c0de:bl0cks die wind00f libs noch linken, probiers mal mit
    #pragma comment(lib, "gdi32.lib")



  • funktioiert auch nicht, er zeigt immer noch das selbe an un zusätlich noch eine warnung: ignoring #pragma comment



  • dann ist er zu dumm für pragma, dann musstes in den linker einstellungen machen in irgendnem menü. oder benutz ne gescheite IDE, wie gsagt, c0de::bl0cks ist für n00bs hehe

    greetz from cybersp@ce,
    hack0r


Anmelden zum Antworten