Menu на главной форме
От: IgorKr Украина  
Дата: 04.01.11 20:09
Оценка:
Здравствуйте.
Создаю меню. Но его не видно. Ошибок при компиляции нету.
Код:
#include <windows.h>

HWND lrkeydown(HWND,HWND,LPARAM);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

#define ID_BUTTON1 3000
#define ID_BUTTON2 3001
#define ID_LISTBOX1 3002
#define ID_LISTBOX2 3003
#define IDM1 3004

char szClassName[] = "MyClass";
HWND hMainWnd,hButton1, hButton2,hListbox1, hListbox2;
HMENU hMenu,hSubMenu1,hSubMenu2,hSubMenu3;
HINSTANCE hInst;


///////////////////////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    hInst=hInstance;
    MSG msg;
    WNDCLASSEX wc;
    
    // Заполняем структуру класса окна
    wc.cbSize        = sizeof(wc);        
    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra     = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = szClassName;
    wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

    // Регистрируем класс окна
    if (!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Cannot register Main class", "Error", MB_OK);
        return 0;
    }

    // Создаем основное окно приложения
    hMainWnd = CreateWindow( 
        szClassName, "MainWindow", WS_OVERLAPPEDWINDOW|WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT, 600, 400,
        (HWND)NULL, (HMENU)NULL,
        (HINSTANCE)hInstance, NULL
    );
    if (!hMainWnd) {
        MessageBox(NULL, "Cannot create main window", "Error", MB_OK);
        return 0;
    }





    
    // Показываем наше окно
    ShowWindow(hMainWnd, nCmdShow); 
//    ShowWindow(hsubmain, nCmdShow);


//    UpdateWindow(hMainWnd);

    // Выполняем цикл обработки сообщений до закрытия приложения
    while (GetMessage(&msg, NULL, 0, 0))  {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}


///////////////////////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;

    switch (msg)
    {
    case WM_CREATE:
        {
            hMenu=CreateMenu();
            hSubMenu1=CreatePopupMenu();
            char str[]="123";
            MENUITEMINFO mii;
            mii.cbSize=sizeof(mii);
            mii.fMask=MIIM_STATE|MIIM_SUBMENU|MIIM_ID;
            mii.fType=MFT_STRING;
            mii.fState=MFS_ENABLED;
            mii.dwTypeData=str;
            mii.cch=sizeof(str);
            mii.wID=IDM1;
            mii.hSubMenu=NULL;

            InsertMenuItem(hSubMenu1,0,FALSE,&mii);

            SetMenu(hWnd,hMenu);DrawMenuBar(hWnd);
            return 0;
        }
    case WM_COMMAND:
        {
            switch(LOWORD(wParam))
            {
            case(ID_BUTTON1):
                {
                
                    break;
                }
            case(ID_BUTTON2):
                {
                    
                    break;
                }
            
            }

            return 0;
        }

    case WM_CLOSE:
        DestroyWindow(hWnd);
        return 0;

    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;

    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }

    return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.