progs.biz  
Начало>WinAPI>API>Урок 23
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Алексей Дубовцев Microsoft .NET. Наиболее полное руководство.
Алексей Дубовцев Microsoft .NET. Наиболее полное руководство.
Заказать на Озоне



Яндекс-цитирования

Windows API
Урок 23. Создаем меню

Пора в нашу программу добавить меню.

Делаем это следующим образом: сначала вызываем CreateMenu для создания главного меню приложения. Потом путем вызова InsertMenuItem добавляем пункты в наше главное меню. Затем присоединяем созданное меню к окну путем вызова функции SetMenu. И, наконец, показываем меню на экране - для этого мы вызываем DrawMenuBar.

Приступаем к конкретному коду.

Для начала создадим вспомогательную функцию CreateMenuItem (она служит для вставки новых элементов в меню):

BOOL CreateMenuItem (HMENU hMenu, char* str,
                     UINT uID, UINT wID, HMENU hSubMenu)
{
    // Заполняем структуру mi.
    MENUITEMINFO mi;
    mi.cbSize = sizeof(MENUITEMINFO);
    mi.fMask = MIIM_STATE|MIIM_TYPE|MIIM_SUBMENU|MIIM_ID;
    mi.fType = MFT_STRING;
    mi.fState = MFS_ENABLED;
    mi.dwTypeData = str;
    mi.cch = sizeof(str);
    mi.wID = wID;
    mi.hSubMenu = hSubMenu; // Устновка подменю.
    // Вставляем меню.
    return InsertMenuItem(hMenu, uID, FALSE, &mi);
}

Наша функция принимает следующие параметры: первый - идентификатор меню, в котрый мы вставляем новый пункт меню. Второй - заголовок пункта меню. Именно его пользователь и увидит. Третий параметр - идентификатор нашего пункта меню. И, наконец, последний параметр - это еще одно подменю, которое будет принадлежать нашему подменю.

Теперь надо добавить в оконную процедуру обработчик для сообщения WM_CREATE. В нем мы как раз и выполняем шаги по созданию меню, описанные в начале этого урока:

LONG WINAPI WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
    // Главное меню.
    static HMENU hMainMenu;

    switch (Message){
    case WM_CREATE:
        // Создаем главное меню.
        hMainMenu = CreateMenu();

        // Добавление пунктов к главному меню.
        CreateMenuItem(hMainMenu, "Tools", 0, 0, NULL);
        CreateMenuItem(hMainMenu, "Help", 1, 0, NULL);
        
        // Присоединяем меню к окну.
        SetMenu(hWnd, hMainMenu);
        
        // Создание полосы меню.
        DrawMenuBar(hWnd);
        break;
        ...

Можно запускать программу. Наши (пока не работающие) пункты меню будут выглядеть так:

Окно с меню
Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2008 сайт progs.biz
© 2002-2008 Игорь Алексеев