Цитата:
Сообщение от 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;
...