Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Grafik mit GDI+

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
02.07.2022, 17:56 Uhr
member



Hallo,

bei meinem Versuch, ein erstes GDI+-Programm zu schreiben erscheinen
beim Kompileren Fehlermeldungen ohne rote Markierungen im C++-Eclipse-Editor.


Code:
#include <windows.h>
#include <gdiplus.h>
using namespace Gdiplus;

void paint(HDC hdc) {
   Graphics graphics(hdc);    // 04
   Pen      pen(Color(255, 0, 0, 255));   // 05
   graphics.DrawLine(&pen, 0, 0, 200, 100);   // 06
}
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;

    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); // 02

    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);  // 03
    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;

    switch(message)
    {
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        paint(hdc);
        EndPaint(hWnd, &ps);
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
} // WndProc

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.07.2022, 00:55 Uhr
member



Hab noch die Zeile (nach der 3.Zeile) hinzugefügt:

Code:
#pragma comment( lib, "GdiPlus.lib" )


Folgende Einstellung geändert:
In Eclispe ->Projekt->Properties->C/C++-Build->Gross G++ Linker
->Libraries und die Datei GdiPlus.lib hinzugefügt.

Fehlermeldung:
"cannot find -lC:\...\GdiPlus.lib".

Ohne diese Einstellung in Eclipse kommen einige Fehlermeldung, beginnend mit
"datei.cpp:22: undefined reference to `GdiplusStartup'" ,
"datei.cpp:22:(.text+0x133): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `GdiplusStartup'" und "datei.cpp:31: undefined reference to `__imp_GetStockObject'".

Dieser Post wurde am 03.07.2022 um 10:27 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.07.2022, 10:29 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
probier mal statt GdiPlus.lib in den Projekt-Einstellungen nur "gdiplus" zu schreiben, kann aber auch sein, das dein compiler keine gdiplus linker library mitbringt.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.07.2022, 16:38 Uhr
member



Danke, für den Vorschlag. Dadurch und durch das Ändern der
Zeile

Code:
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);


in
Code:
wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);


wurde fehlerfrei kompiliert.
Was hat es mit der GetStockObject-Fehlermeldung auf sich?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: