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

Windows API

  Все выпуски  

Windows API


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

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

Боресков А. В. Графика трехмерной компьютерной игры на основе OpenGL.
Боресков А. В. Графика трехмерной компьютерной игры на основе 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
Отписаться

В избранное