Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PopupMenu выделение по меню по умолчанию 
V
    Опции темы
Michrutka
Дата 8.12.2009, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 6.2.2008

Репутация: нет
Всего: нет



Доброе время суток!
Подскажите пожалуйста в чем может быть проблема:
я отображаю иконку в трее с помощью TNotifyIconData.
привязываю по клику Popupmenu
и хочу выделить одно поле жирным (по умолчанию)
делаю это с помощью SetMenuItemInfo(...)
код:
Код

//MainPopupMenu - требуемое Popupmenu
//NGraph - требуемый пункт меню
MENUITEMINFO MIInfo;
MIInfo.cbSize = sizeof (MENUITEMINFO);
MIInfo.fMask =  MIIM_STATE;
MIInfo.fState = MFS_DEFAULT;

if (SetMenuItemInfo(MainPopupMenu->Handle,NGraph->MenuIndex ,true ,&MIInfo) == 0){
                MessageBoxA(NULL, SysErrorMessage(GetLastError()).c_str(), "Ошибка!", 16);
}
DrawMenuBar(MainPopupMenu->Handle);


Никакая ошибка не генерится, но и ничего не выделяется.
решил проверить выставляется ли свойство у пункта меню:

Код

MENUITEMINFO MI;
MI.cbSize = sizeof (MENUITEMINFO);
if (GetMenuItemInfo(MainPopupMenu->Handle,NGraph->MenuIndex ,true ,&MI) == 0){
                MessageBoxA(NULL, SysErrorMessage(GetLastError()).c_str(), "Ошибка!", 16);
}
if(MI.fState == MFS_DEFAULT){
        ShowMessage("Default");}
else{
        ShowMessage("No Default");
}


выскакивает, что явлеется(то есть "Default")
в чем ожет быть проблема, подскажите, пожалуйста, - почему не выделяет?
заранее спасибо!
PM MAIL   Вверх
shklowsky
Дата 8.12.2009, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 21.7.2009

Репутация: 5
Всего: 6



попробуй:
1  занулять структуру при объяве:  MENUITEMINFO MIInfo={sizeof(MENUITEMINFO)};
2  заполнить поле fType:   MIInfo.fType=MFT_STRING;
PM MAIL   Вверх
Michrutka
Дата 8.12.2009, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 6.2.2008

Репутация: нет
Всего: нет



Цитата(shklowsky @ 8.12.2009,  16:46)
попробуй:
1  занулять структуру при объяве:  MENUITEMINFO MIInfo={sizeof(MENUITEMINFO)};
2  заполнить поле fType:   MIInfo.fType=MFT_STRING;

Не-а. не помогло(
PM MAIL   Вверх
shklowsky
Дата 8.12.2009, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 21.7.2009

Репутация: 5
Всего: 6



 а вот так?
Цитата


The SetMenuDefaultItem function sets the default menu item for the specified menu.

BOOL SetMenuDefaultItem(

    HMENU hMenu,  
    UINT uItem,  
    UINT fByPos    
   );    
 

Parameters

hMenu

Handle to the menu to set the default item for.

uItem

Identifier or position of the new default menu item or - 1 for no default item. The meaning of this parameter depends on the value of fByPos.

fByPos

Value specifying the meaning of uItem. If this parameter is FALSE, uItem is a menu item identifier. Otherwise, it is a menu item position.



и, видимо, TrackPopupMenu вместо DrawMenuBar

Это сообщение отредактировал(а) shklowsky - 8.12.2009, 17:29
PM MAIL   Вверх
Michrutka
Дата 8.12.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 6.2.2008

Репутация: нет
Всего: нет



Не-а. тот же результат.
говорит, что все успешно, но при этом не выделяет.
Спасибо =)
PM MAIL   Вверх
shklowsky
Дата 8.12.2009, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 21.7.2009

Репутация: 5
Всего: 6



тогда хз что токое.

Код


void __fastcall TForm1::Button1Click(TObject *Sender)
{
PopupMenu1->Items->Find("abc")->Default=true;
PopupMenu1->Popup(Left+100,Top+50);
}


выделяется.

PM MAIL   Вверх
Michrutka
Дата 8.12.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 6.2.2008

Репутация: нет
Всего: нет



Мда( 
самый простой путь как всегда - самое лучшее и нечего лезть в Апи.

shklowsky, Спасибо!
так:
Код

NGraph->Default = true;

работает.
а вот почему апишные не хотят....вопросик.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1096 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.