Отправляет email-рассылки с помощью сервиса Sendsay

Windows API

  Все выпуски  

Windows API


Информационный Канал Subscribe.Ru

Windows API. Рассылки сайта progs.biz
Рассылка № 22
 
Начало > WinAPI > Основы > Урок 24

Боресков А. В. Графика трехмерной компьютерной игры на основе OpenGL.

Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 24.

Windows API
Урок 24. Добавляем пункты в меню

Созданное нами на прошлом уроке меню только показывалось. При этом у него не было подпунктов и оно не работало - в том смысле, что никакие действия по щелчку на нем не производились. Исправим это.

Для этого надо в оконную процедуру внести следующий код:

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

    switch (Message){
    case WM_CREATE:
        // Создаем главое меню.
        hMainMenu = CreateMenu();
        
        // Создаем подменю.
        hOptionsMenu = CreatePopupMenu();
        
        // Добавление подпункта "Options".
        CreateMenuItem(hOptionsMenu, "Options", 0, 1001, NULL);

        // Добавление пункта "Options" к главному меню.
        CreateMenuItem(hMainMenu, "Tools", 0, 0, hOptionsMenu);
        ...

Тут обратите внимание, что мы переделали вызов функции CreateMenuItem - у нас была строка:

...CreateMenuItem(hMainMenu, "Tools", 0, 0, NULL);
 ...

а стала

...CreateMenuItem(hMainMenu, "Tools", 0, 0, hOptionsMenu);
 ...

Тут мы как раз в последенем параметре и указываем, что у нашего меню у нулевого пункта ("Tools") будет подпункт "Options".

Также обратите внимание на то, что для вновь создаваемого пункта мы указали идентификатор 1001:

...
CreateMenuItem(hOptionsMenu, "Options", 0, 1001, NULL);
 ...

Теперь мы добавим обрабитчик для нашего нового пункта меню "Options". Обработчик будет в case WM_COMMAND и выглядеть он будет так:

    switch (Message){
    ...
    case WM_COMMAND:
        // Если выбрали пункт меню.
        if(LOWORD(wParam) == 1001)
        {
            MessageBox(hWnd, "Options", "Options", NULL);
        }
        break;
        ...

Все. Программу можно запускать. При у нашего меню Tools будет подменю Options, при выборе которого будет возникать messagebox.

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


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


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

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.winapilessons
Отписаться

В избранное