GDI und hwnd;



  • Zuerst einmal mein code:

    #include <windows.h>
    
    #define LINIE      1
    
    HWND bPixel;
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";
    
    int WINAPI WinMain (HINSTANCE hThisInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpszArgument,
                        int nFunsterStil)
    
    {
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */
    
        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);
    
        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    
        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;
    
        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "Windows App",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               544,                 /* The programs width */
               375,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );
    
        /* Make the window visible on the screen */
        ShowWindow (hwnd, nFunsterStil);
    
         bPixel      = CreateWindow("button", "Pixel", WS_CHILD | WS_VISIBLE |
                                   BS_DEFPUSHBUTTON, 310, 0, 80, 30,
                                   hWnd, (HMENU)PIXEL, hInstance, NULL);
    
        /* Run the message loop. It will run until GetMessage() returns 0 */
        while (GetMessage (&messages, NULL, 0, 0))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
    
        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }
    
    /*  This function is called by the Windows function DispatchMessage()  */
    
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)                  /* handle the messages */
        {            
             case WM_CLOSE:
                DestroyWindow(hwnd);
                return 0;
            case WM_PAINT:
                PAINTSTRUCT ps;
                HDC hdc;
                hdc = BeginPaint (hwnd, &ps);
                SetTextColor( hdc, RGB( 255,   0,  0) );  // rot
                SetBkColor  ( hdc, RGB( 255, 255,  0) );  // gelb
                TextOut     ( hdc, 20, 20, "Ich bin ein Fenster.", 20);
                EndPaint (hwnd, &ps); 
                return 0;
            case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
    
        return 0;
    }
    

    Dies war der versuch oben ein inputfeld hinzusetzen und unten mit der pixel malen zu können die dort hingesetzt werden wo sich halt die maus befindet (int X,Y;)

    Compiler: Default compiler
    Building Makefile: "C:\Dev-Cpp\Makefile.win"
    Executing make...
    make.exe -f "C:\Dev-Cpp\Makefile.win" all
    g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

    main.cpp: In function int WinMain(HINSTANCE__*, HINSTANCE__*, CHAR*, int)': main.cpp:63: error:hWnd' undeclared (first use this function)
    main.cpp:63: error: (Each undeclared identifier is reported only once for each function it appears in.)
    main.cpp:63: error: PIXEL' undeclared (first use this function) main.cpp:63: error:hInstance' undeclared (first use this function)

    make.exe: *** [main.o] Error 1

    Execution terminated

    Ich wäre für eure hilfe dankbar



  • Bei hWnd bei CreateWindow() in Zeile 63 Groß/Kleinschreibung beachten!

    Er findet die Resource PIXEL nicht, demnach die Resourcen nicht richtig eingebunden.

    In der WinMain heisst es bei dir hThisInstance, bei CreateWindow() gibts du aber hInstance an.



  • Bei hWnd bei CreateWindow() in Zeile 63 Groß/Kleinschreibung beachten!

    Er findet die Resource PIXEL nicht, demnach die Resourcen nicht richtig eingebunden.

    In der WinMain heisst es bei dir hThisInstance, bei CreateWindow() gibts du aber hInstance an.

    Fehler 1 und 3 sind korrigiert. Danke.

    Das mit der Resource verstehe ich nicht (den code teil habe ich aus dem i net)



  • #define PIXEL 1000
    

    ... deswegen kopiert man nicht einfach Code ...


Anmelden zum Antworten