Koppeln eines Menü's mit Dialogfenster



  • Hallo.

    Ich möchte gern ein Dialogfenster mit Menü erstellen. Der folgende Code stellt nur das normale Fenster dar. Wie muss ich den verändern, damit das in der Ressource-Datei resource.h gespeicherte Menü "IDR_MENU1" auch dargestellt wird?

    Danke!
    FRANK REICH

    #include <windows.h>
    #include "resource.h"

    HBRUSH g_hbrBackground = NULL;

    BOOL CALLBACK DlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
    {
    switch(Message)
    {
    case WM_INITDIALOG:
    g_hbrBackground = CreateSolidBrush(RGB(180, 180, 180));

    SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon(NULL,
    MAKEINTRESOURCE(IDI_APPLICATION)));
    SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)LoadIcon(NULL,
    MAKEINTRESOURCE(IDI_APPLICATION)));
    break;

    case WM_CLOSE:
    EndDialog(hwnd, 0);
    break;

    case WM_CTLCOLORDLG:
    return (LONG)g_hbrBackground;

    case WM_CTLCOLORSTATIC:
    {
    HDC hdcStatic = (HDC)wParam;
    SetTextColor(hdcStatic, RGB(255, 255, 255));
    SetBkMode(hdcStatic, TRANSPARENT);
    return (LONG)g_hbrBackground;
    }
    break;
    case WM_COMMAND:
    switch(LOWORD(wParam))
    {
    case IDOK:
    EndDialog(hwnd, 0);
    break;

    case IDCANCEL:
    EndDialog(hwnd, 0);
    break;
    }
    break;
    case WM_DESTROY:
    DeleteObject(g_hbrBackground);
    break;
    default:
    return FALSE;
    }
    return TRUE;
    }

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    {
    return DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc);
    }



  • Du wählst das Menü im Resourceeditor.
    Dazu brauchst Du keine Zeile Code schreiben.



  • Aber wenn man nichts im Code ändert, woher weis dann dass Dialogfenster, dass es ein Menü besitzt?

    Frank Reich



  • Wenn Du was an den Resourcen änderst, dann wird es vermutlich in den Resourcen stehen und somit weis der wo die Resourcen lädt was er nehmen soll, oder?



  • Wenn ich mir das Resource Template anschaue, sehe ich da eine Definition für das Menü und eine für das Dialogfenster. Ich kann aber nirgendswo den Link sehen, dass das Menü zum Dialogfenster gehören soll. Die "resource.h" hilft mir da auch nicht viel weiter. Gibts nur ne ID für das Menü und eine für das Dialogfenster.

    "RESOURCE.H"
    //{{NO_DEPENDENCIES}}
    // Microsoft Developer Studio generated include file.
    // Used by dlg_three.rc
    //
    #define IDD_MAIN 101
    #define IDR_MENU1 102
    #define ID_EXIT 40001
    #define ID_OTHERS 40002

    // Next default values for new objects
    //
    #ifdef APSTUDIO_INVOKED
    #ifndef APSTUDIO_READONLY_SYMBOLS
    #define _APS_NEXT_RESOURCE_VALUE 103
    #define _APS_NEXT_COMMAND_VALUE 40003
    #define _APS_NEXT_CONTROL_VALUE 1000
    #define _APS_NEXT_SYMED_VALUE 101
    #endif
    #endif

    **********************RESOURCEN TEMPLATE**********************
    //Microsoft Developer Studio generated resource script.
    //
    #include "resource.h"

    #define APSTUDIO_READONLY_SYMBOLS
    /////////////////////////////////////////////////////////////////////////////
    //
    // Generated from the TEXTINCLUDE 2 resource.
    //
    #ifndef __BORLANDC__
    #include "winres.h"
    #endif

    /////////////////////////////////////////////////////////////////////////////
    #undef APSTUDIO_READONLY_SYMBOLS

    /////////////////////////////////////////////////////////////////////////////
    // English (U.K.) resources

    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
    #ifdef _WIN32
    LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
    #pragma code_page(1252)
    #endif //_WIN32

    /////////////////////////////////////////////////////////////////////////////
    //
    // Menu
    //

    IDR_MENU1 MENU DISCARDABLE
    BEGIN
    POPUP "File"
    BEGIN
    MENUITEM "Exit", ID_EXIT
    END
    POPUP "Others"
    BEGIN
    MENUITEM "???", ID_OTHERS
    END
    END

    #endif // English (U.K.) resources
    /////////////////////////////////////////////////////////////////////////////

    /////////////////////////////////////////////////////////////////////////////
    // English (Canada) resources

    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC)
    #ifdef _WIN32
    LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN
    #pragma code_page(1252)
    #endif //_WIN32

    #ifdef APSTUDIO_INVOKED
    /////////////////////////////////////////////////////////////////////////////
    //
    // TEXTINCLUDE
    //

    1 TEXTINCLUDE DISCARDABLE
    BEGIN
    "resource.h\0"
    END

    2 TEXTINCLUDE DISCARDABLE
    BEGIN
    "#ifndef __BORLANDC__\r\n"
    "#include ""winres.h""\r\n"
    "#endif\r\n"
    "\0"
    END

    3 TEXTINCLUDE DISCARDABLE
    BEGIN
    "\r\n"
    "\0"
    END

    #endif // APSTUDIO_INVOKED

    /////////////////////////////////////////////////////////////////////////////
    //
    // Dialog
    //

    IDD_MAIN DIALOG DISCARDABLE 0, 0, 186, 46
    STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
    CAPTION "Dialog tricks"
    FONT 8, "MS Sans Serif"
    BEGIN
    DEFPUSHBUTTON "OK",IDOK,129,25,50,14
    END

    /////////////////////////////////////////////////////////////////////////////
    //
    // DESIGNINFO
    //

    #ifdef APSTUDIO_INVOKED
    GUIDELINES DESIGNINFO DISCARDABLE
    BEGIN
    IDD_MAIN, DIALOG
    BEGIN
    LEFTMARGIN, 7
    RIGHTMARGIN, 179
    TOPMARGIN, 7
    BOTTOMMARGIN, 39
    END
    END
    #endif // APSTUDIO_INVOKED

    #endif // English (Canada) resources
    /////////////////////////////////////////////////////////////////////////////

    #ifndef APSTUDIO_INVOKED
    /////////////////////////////////////////////////////////////////////////////
    //
    // Generated from the TEXTINCLUDE 3 resource.
    //

    /////////////////////////////////////////////////////////////////////////////
    #endif // not APSTUDIO_INVOKED


Anmelden zum Antworten