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

Windows API

  Все выпуски  

Windows API


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

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

Б. Страуструп. Язык программирования С++.
Б. Страуструп. Язык программирования С++.
Заказать на Озоне

Подробнее


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

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;
        ...

Можно запускать программу. Программа будет иметь (пока не работающие) пункты меню.

Рассылки сайта 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
Отписаться

В избранное