Probleme mit MVC2005Express & GDI+



  • Hallo ans Forum,

    habe natürlich dafür das ich mit C++ starte denkbar doofe Anfangsbedingungen
    da sehr speziell.

    AMD64 mit XP64 als Betriebssystem
    MVC2005Express als IDE

    Stoße oft bei Tutorials auf das Problem das ich einfache *.cpp & *.h Dateien vorfinde
    aber nicht verstehe wie ich die dann in meiner IDE zum laufen bekomme.
    Wollte jetzt mit GDI+ ein wendig rumprobieren und bin wie folgt vorgegangen.

    1. File/New Project => General/Empty Project => OK
    Dann:
    2. Project/Add New Item => main.cpp => OK
    und hier dann den Code vom der Microsoft-Seite eingepasted.

    #define UNICODE
    #include <windows.h>
    #include <gdiplus.h>
    using namespace Gdiplus;
    
    VOID OnPaint(HDC hdc)
    {
       Graphics graphics(hdc);
       Pen      pen(Color(255, 0, 0, 255));
       graphics.DrawLine(&pen, 0, 0, 200, 100);
    }
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, INT iCmdShow)
    {
       HWND                hWnd;
       MSG                 msg;
       WNDCLASS            wndClass;
       GdiplusStartupInput gdiplusStartupInput;
       ULONG_PTR           gdiplusToken;
    
       // Initialize GDI+.
       GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
    
       wndClass.style          = CS_HREDRAW | CS_VREDRAW;
       wndClass.lpfnWndProc    = WndProc;
       wndClass.cbClsExtra     = 0;
       wndClass.cbWndExtra     = 0;
       wndClass.hInstance      = hInstance;
       wndClass.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
       wndClass.hCursor        = LoadCursor(NULL, IDC_ARROW);
       wndClass.hbrBackground  = (HBRUSH)GetStockObject(WHITE_BRUSH);
       wndClass.lpszMenuName   = NULL;
       wndClass.lpszClassName  = TEXT("GettingStarted");
    
       RegisterClass(&wndClass);
    
       hWnd = CreateWindow(
          TEXT("GettingStarted"),   // window class name
          TEXT("Getting Started"),  // window caption
          WS_OVERLAPPEDWINDOW,      // window style
          CW_USEDEFAULT,            // initial x position
          CW_USEDEFAULT,            // initial y position
          CW_USEDEFAULT,            // initial x size
          CW_USEDEFAULT,            // initial y size
          NULL,                     // parent window handle
          NULL,                     // window menu handle
          hInstance,                // program instance handle
          NULL);                    // creation parameters
    
       ShowWindow(hWnd, iCmdShow);
       UpdateWindow(hWnd);
    
       while(GetMessage(&msg, NULL, 0, 0))
       {
          TranslateMessage(&msg);
          DispatchMessage(&msg);
       }
    
       GdiplusShutdown(gdiplusToken);
       return msg.wParam;
    }  // WinMain
    
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, 
       WPARAM wParam, LPARAM lParam)
    {
       HDC          hdc;
       PAINTSTRUCT  ps;
    
       switch(message)
       {
       case WM_PAINT:
          hdc = BeginPaint(hWnd, &ps);
          OnPaint(hdc);
          EndPaint(hWnd, &ps);
          return 0;
       case WM_DESTROY:
          PostQuitMessage(0);
          return 0;
       default:
          return DefWindowProc(hWnd, message, wParam, lParam);
       }
    } // WndProc
    

    Und bekomme dann Fehlermeldungen wie diese

    1>main.obj : error LNK2019: unresolved external symbol _GdipCreatePen1@16 referenced in function "public: __thiscall Gdiplus::Pen::Pen(class Gdiplus::Color const &,float)" (??0Pen@Gdiplus@@QAE@ABVColor@1@M@Z)

    Ich habe mich mal an ein paar Tutorials von Allegro gesetzt.
    Das hat bisher ganz gut geklappt. Wollte jetzt aber die GDI+- Bibliothek zusätzlich nutzen,
    da Allegro nicht in Nachkommastellen sauber rotieren kann.
    Auch das Alpha-Blending ist in Allegro nicht möglich.
    Vielleicht muß ich auch auf Allegro verzichten.
    Nur habe ich bisher kein einziges GDI+Script zum laufen bekommen.
    Vielleicht könnt ihr mir helfen.

    Vielen Dank

    jano



  • Ist zwar WINAPI aber es sieht danach aus als fehlt dir eine LIB welche du noch linken musst.
    Der Code ist für den Compiler OK und steigt aber beim linken aus.



  • Ja, es fehlt die gdiplus.lib



  • Dieser Thread wurde von Moderator/in dEUs aus dem Forum MFC (Visual C++) in das Forum WinAPI verschoben.

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

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten