Создание нового меню функцией CreateMenu
Добавлено: 04 мар 2010, 18:53
Есть ли у кого-нибудь опыт работы с функцией CreateMenu ?
Она у меня всегда возвращает ноль, исключение не генерируется, при этом меню создается (по нажатию правой кнопки я его вижу). Но если вызвать контекстное меню несколько раз подряд, галка вылетает по рантайму. При каждом нажатии выполняется примерно следующее:
Здравый смысл подсказывает, что нулевая ссылка на меню при выполнении CreateMenu - это ошибка (если нет, то совсем непонятно) и причина рантаймов кроется именно в этом.
Может кто-нибудь прояснит ситуацию?
Код: Выделить всё
Назначение
Создать новое меню.
Описание
function CreateMenu : longInt;
Возвращаемое значение
Идентификатор созданного меню.
В случае, если меню не создалось, возбуждается исключение ExVip.ExLoadMenuError
Код: Выделить всё
lMenu := CreateMenu ; // возвращает почему-то всегда ноль - в доках не сказано, считать ли ноль ошибкой
for (i := 0; i < count(ArrMenuItemName); i++)
{
var l : longint
l := LoadMenuEx (ArrMenuItemName[i], true, false)
if (l != 0) // в доках для LoadMenuEx ясно сказано, что 0 это ошибка
{
ConcatMenu(lMenu, l) ; // именно в этом месте я получаю рантайм при многократном вызове контекстного меню
}
}
AddMenuItem(lMenu,'separator',666);
AddMenuItem(lMenu,'Новый пункт меню', cmNEW);
PutHotCommand(RunLoadMenu(lMenu));
Может кто-нибудь прояснит ситуацию?