Windows Menü Funktionen. Brauche Hilfe.



  • Guten Abend
    Ich habe vor einigen Wochen mit C++ angefangen und kann jetzt die Grundlagen und ein paar fortgeschrittene Themen. Nun möchte ich Windows Programme proggen. Hier mein Code:

    #include <windows.h>

    #define ID_DATEI_BEENDEN 9001
    #define ID_FORM_DREIECKE 9002
    #define ID_INFO_ABOUT 9003

    const char g_szClassName[] = "myWindowClass";

    LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
    {
    switch(Message)
    {
    case WM_CREATE:
    {
    HMENU hMenu, hSubMenu;
    HICON hIcon, hIconSm;

    hMenu = CreateMenu();

    hSubMenu = CreatePopupMenu();
    AppendMenu(hSubMenu, MF_STRING, ID_DATEI_BEENDEN, "B&eenden");
    AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Datei");

    hSubMenu = CreatePopupMenu();
    AppendMenu(hSubMenu, MF_STRING, ID_FORM_DREIECKE, "&Dreiecke");
    AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Form");

    hSubMenu = CreatePopupMenu();
    AppendMenu(hSubMenu, MF_STRING, ID_INFO_ABOUT, "&About");
    AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Info");

    SetMenu(hwnd, hMenu);

    }
    break;
    case WM_COMMAND:
    switch(LOWORD(wParam))
    {
    case ID_DATEI_BEENDEN:
    PostMessage(hwnd, WM_CLOSE, 0, 0);
    break;
    case ID_FORM_DREIECKE:
    MessageBox(hwnd, "Noch keine Funktion!", "Sorry!", MB_OK);
    break;
    case ID_INFO_\1:
    MessageBox(hwnd, "Noch keine Funktion!", "Sorry!", MB_OK);
    break;
    }
    break;
    case WM_CLOSE:
    DestroyWindow(hwnd);
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hwnd, Message, wParam, lParam);
    }
    return 0;
    }

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    {
    WNDCLASSEX wc;
    HWND hwnd;
    MSG Msg;

    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = 0;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = NULL;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = g_szClassName;
    wc.hIconSm = NULL;

    if(!RegisterClassEx(&wc))
    {
    MessageBox(NULL, "Window Registration Failed!", "Error!",
    MB_ICONEXCLAMATION | MB_OK);
    return 0;
    }

    hwnd = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    g_szClassName,
    "Stefan Jakovljevic's Mathe Berechungs Programm Version 1.0",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 600, 400,
    NULL, NULL, hInstance, NULL);

    if(hwnd == NULL)
    {
    MessageBox(NULL, "Window Creation Failed!", "Error!",
    MB_ICONEXCLAMATION | MB_OK);
    return 0;
    }

    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
    }
    return Msg.wParam;
    }

    Diesen Teil möchte ich ändern:

    hSubMenu = CreatePopupMenu();
    AppendMenu(hSubMenu, MF_STRING, ID_FORM_DREIECKE, "&Dreiecke");
    AppendMenu(hMenu, MF_STRING | MF_POPUP, (UINT)hSubMenu, "&Form");

    Ich möchte, dass beim Klicken auf "Dreiecke" im Hauptfenster ein Programm aufgeht. Dort soll man dann Zahlen eingeben usw. Doch ich brauch den Code. So nebenbei, gibts sowas wie http://self.cpp.org oda so? 😛


Anmelden zum Antworten