Показать сообщение отдельно
  #11  
Старый 22.03.2008, 02:03
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Цитата:
Сообщение от vinni
Если можно, напиши, плиз, пример с раскрыващимся подменю, в котором, например, 10 пунктов.

Во-первых, поправлю сам себя: для создания подменю нужно использовать CreatePopupMenu, а не CreateMenu.

Во-вторых, вот функция, которая создаст нам это самое подменю:
Код:
function  CreateSubMenu: HMENU;
// Создаем подменю
begin
  Result := CreatePopupMenu;

  AppendMenu(Result, MF_STRING,     CM_ABOUT, 'Item 0');
  AppendMenu(Result, MF_STRING,     CM_ABOUT, 'Item 2');
  AppendMenu(Result, MF_STRING,     CM_ABOUT, 'Item 3');
  AppendMenu(Result, MF_STRING,     CM_ABOUT, 'Item 4');
  AppendMenu(Result, MF_SEPARATOR,  WM_NULL,  nil);
  AppendMenu(Result, MF_STRING,     CM_ABOUT, 'Item 5');
end;
Как видите, ничего сложного.

Теперь нужно только подправить немножко процедуру AddItem:
Код:
...
  with MenuItemInfo do begin
    cbSize        := SizeOf(MenuItemInfo);
    fMask         := MIIM_TYPE + MIIM_DATA + MIIM_SUBMENU;
    fType         := MFT_STRING;
    wID           := 0;
    hSubMenu      := CreateSubMenu; // Назначаем подменю
    dwItemData    := Application.Handle; // Признак для опознания "своих" пунктов меню
    dwTypeData    := CaptStr;
    cch           := Length(SNewMenuItemCaption);
  end;
...
Ответить с цитированием