WinApi in Visual C++ Express 2008?



  • In VC2008 ist das PSDK schon dabei... nur in VC2005 musste man es extra runterladen...



  • Hab viele Sachen vesucht bis gar nichts mehr ging deshalb hab ich VC++2008 neuinstalliert. Ich will jetzt einfach wissen wie ich ein WinApi Programm erstell und programmiere(Vielleicht bitte eine kleine Anweisung?).
    ---------------------------------------------------------
    Kann ich denn in VC++2008 auch Ressourcen verwenden?

    Edit: Erst erstell ich ein Projekt 'Win32 Projekt'
    Windows anwendung - lerres Projekt

    und füge *.cpp Datei dazu mit diesen Code:

    #include <windows.h>
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    LPCSTR lpszAppName = "AppName";
    LPCSTR lpszTitle   = "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(NULL,
                             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);
    }
    

    und klick auf dieses Grüne Play(Debug Win32)
    Dann kommt auf "Microsoft (r) C/C++ Compiler Driver funktioniert nicht mehr"
    dann klick ich auf Programm schließen.
    Dann steht da das es das Program nicht finden kann.

    und das ist glaube ich der Buildlog:

    1>------ Erstellen gestartet: Projekt: winapitest, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>Projekt : error PRJ0002 : Fehler "-1073741515" wurde von "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\cl.exe" zurückgegeben.
    1>Das Buildprotokoll wurde unter "file://c:\Users\Dominic\Documents\Visual Studio 2008\Projects\winapitest\winapitest\Debug\BuildLog.htm" gespeichert.
    1>winapitest - 1 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    Edit2:
    Wenn ich cl.exe in cmd öffne steht das die mspdb80.dll fehlt. Woher bekomm ich die?



  • Ha! Sehr gute Fehlerbeschreibung, sowas hab ich hier schon seit langem nicht mehr gesehen!

    So wie es aussieht, unterläuft bei der Installation von MSVC++ 2008 ein Fehler, der dir die .DLL nicht mitkopiert, oder vllt. ist auch das Setup-Binary defekt oder unvollständig? Schade, dass MS keine Checksums anbietet...

    Net-Install gemacht? Gibt doch bestimmt auch .ISOs (gab es zumindest bei 2005), die du saugen kannst. Probier es mal mit so einer.

    Grüße, Xantus.



  • Hab gerade die .iso Datei gefunden uns lade sie jetzt mal runter.. Könnte etwas länger dauern als der Web-Install ^^".



  • Habe jetzt die .ISO Datei installiert. Hat ganz schön lange gedauert.. Habe auch schon ein WinApi-Fenster vesucht zu programmieren. Doch es kommt der gleiche Fehler.

    1>------ Erstellen gestartet: Projekt: winapitest, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>Projekt : error PRJ0002 : Fehler "-1073741515" wurde von "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\cl.exe" zurückgegeben.
    1>Das Buildprotokoll wurde unter "file://c:\Users\Dominic\Documents\Visual Studio 2008\Projects\winapitest\winapitest\Debug\BuildLog.htm" gespeichert.
    1>winapitest - 1 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========



  • Hab gelesen das ich

    %userprofile%\Local Settings\Application Data\Microsoft\VCExpress\8.0\VCComponents.dat

    löschen muss und neuinstallieren.

    Es klappt bzw. der Fehler beseitigt. Dennoch gibt es wieder Probleme die es bei Dev-Cpp nicht gab:

    1>------ Erstellen gestartet: Projekt: winapitest, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>main.cpp
    1>c:\users\dominic\documents\visual studio 2008\projects\winapitest\winapitest\main.cpp(25) : error C2440: '=': 'LPCSTR' kann nicht in 'LPCWSTR' konvertiert werden
    1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    1>c:\users\dominic\documents\visual studio 2008\projects\winapitest\winapitest\main.cpp(26) : error C2440: '=': 'LPCSTR' kann nicht in 'LPCWSTR' konvertiert werden
    1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    1>c:\users\dominic\documents\visual studio 2008\projects\winapitest\winapitest\main.cpp(43) : error C2664: 'CreateWindowExW': Konvertierung des Parameters 2 von 'LPCSTR' in 'LPCWSTR' nicht möglich
    1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    1>Das Buildprotokoll wurde unter "file://c:\Users\Dominic\Documents\Visual Studio 2008\Projects\winapitest\winapitest\Debug\BuildLog.htm" gespeichert.
    1>winapitest - 3 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    Bitte um Hilfe



  • Projekteigenschaften - Allgemein - Zeichensatz -> "Nicht festgelegt" oder "Multi-Byte Zeichensatz verwenden" aktivieren



  • oder besser:
    schreib deine programme in unide oder schreib sie so, dass du unicode UND multi benutzen kannst. such dafür hier nach.



  • Habe so ziemlich das gleiche Problem aber :

    Projekteigenschaften - Allgemein - Zeichensatz -> "Nicht festgelegt" oder "Multi-Byte Zeichensatz verwenden" aktivieren

    klappt bei mir nicht o0
    bzw. danach klappt es immer noch nicht.



  • @bakoora
    Hast du die Einstellungen auch für den gewünschten Modus (Debug/Release) gemacht?

    MfG


Anmelden zum Antworten