Windows Func Problem



  • #include <windows.h>
    #include <stdio.h>

    HWND CreateWindowEx(
    DWORD dwExStyle,
    LPCTSTR lpClassName,
    LPCTSTR lpWindowName,
    DWORD dwStyle,
    LPVOID lpParam,
    int x,
    int y,
    int nWidth,
    int nHeight,
    HWND hWndParent,
    HMENU hMenu,
    HINSTANCE hInstance
    );

    LRESULT CALLBACK MessageHandler(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
    {
    switch(msg)
    {
    case WM_CREATE:
    return 0;
    break;
    case WM_LBUTTONDBLCLK:
    return 0;
    break;
    case WM_CLOSE:
    return 0;
    break;
    }
    return (DefWindowProc(hWnd, msg, wParam, lParam));
    }

    HRESULT CALLBACK WindowFunc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam)
    {
    switch(msg)
    {
    case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
    break;
    case WM_LBUTTONDOWN:
    PAINTSTRUCT ps;
    HDC hDC;

    hDC = BeginPaint(hWnd,&ps);

    HPEN PenRed = CreatePen(PS_SOLID,3,0xFF004BFF);
    HPEN PenGreen = CreatePen(PS_SOLID,2,0x2DFF00FF);
    HPEN PenBlue = CreatePen(PS_SOLID,1,0x0000FFFF);

    SelectObject(hDC,PenBlue);
    Ellipse(hDC,60,5,340,250);
    Ellipse(hDC,150,190,250,210);

    SelectObject(hDC,PenGreen);
    Rectangle(hDC,110,40,160,80);
    Rectangle(hDC,240,40,290,80);

    SelectObject(hDC,PenRed);
    LineTo(hDC,180,150);
    LineTo(hDC,220,150);
    LineTo(hDC,200,120);

    DeleteObject(PenRed);
    DeleteObject(PenBlue);
    DeleteObject(PenGreen);

    EndPaint(hWnd,&ps);
    return 0;
    break;
    }
    return (DefWindowProc(hWnd, msg, wparam, lparam));
    }

    HWND CreateMainWindow(HINSTANCE hInstance)
    {
    WNDCLASSEX wndClass; // WNDCLASSEX Struktur

    // Struktur initialisieren
    wndClass.cbSize = sizeof(WNDCLASSEX); // Größe angeben (nie vergessen!)
    wndClass.style = CS_DBLCLKS | CS_OWNDC |
    CS_HREDRAW | CS_VREDRAW; // Standard Stile
    wndClass.lpfnWndProc = MessageHandler; // Die Callback Funktion angeben

    wndClass.cbClsExtra = 0; // Zusätzliche Angaben, wird nicht benötigt
    wndClass.cbWndExtra = 0; // Zusätzliche Angaben, wird nicht benötigt
    wndClass.hInstance = hInstance; // Anwendungsinstanz

    wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // Weisser Pinsel
    wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); // Normaler Cursor
    wndClass.lpszMenuName = NULL; // Das Fenster hat kein Menü
    wndClass.lpszClassName = "WindowClass"; // Der Name der Klasse
    wndClass.hIcon = LoadIcon(NULL, IDI_WINLOGO); // Windows Logo
    wndClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); // Windows Logo

    RegisterClassEx(&wndClass);

    return CreateWindowEx(NULL, // Keine erweiterten Stile nutzen
    "WindowClass", // Klassenname
    "Hello Windows", // Fenstertitel
    WS_OVERLAPPEDWINDOW | // Fenster
    WS_VISIBLE, // Eigenschaften
    0, 0, 400, 300, // Anfangsposition und Größe
    NULL, // Handle des Elternfensters
    NULL, // Handle des Menüs
    hInstance, // Anwendungsinstanz
    NULL); // wird nicht benötigt
    }

    typedef struct _WNDCLASSEX
    {
    UINT cbSize;
    UINT style;
    WNDPROC lpfnWndProc;
    int cbClsExtra;
    int cbWndExtra;
    HINSTANCE hInstance;
    HICON hIcon;
    HCURSOR hCursor;
    HBRUSH hbrBackround;
    LPCTSTR lpszMenuName;
    HICON hIconSm;
    };

    HWND hWnd = 0;

    int WINAPI WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)
    {
    hWnd = CreateMainWindow(hInstance);

    /*PAINTSTRUCT ps;
    HDC hDC;

    hDC = BeginPaint(hWnd,&ps);

    for(int i = 0; i < 200;i+=200)
    {
    SetTextColor(hDC,0xFF2800FF);
    TextOut(hDC,i,i,"Hallortttt nana Ja",18);

    }
    */

    MessageBox(0,"Erfolgreich erstellt","Nachricht",MB_OK);
    if(hWnd == 0)
    {
    MessageBox(0,"Fenster konnte nicht erzeugt werden","Fehler",MB_OK);
    return 0;
    }
    MSG msg;

    // Diese Schleife läuft bis die Nachricht WM_QUIT empfangen wird
    while(GetMessage(&msg,NULL,0,0))
    {
    // Nachricht an die Callbackfunktion senden
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    return 0;
    }
    Das klappt nicht also das was in windowfuunc ist wird nicht angezeigt


  • Mod


Anmelden zum Antworten