Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пример конструирования и работы с MENU ListControl 
:(
    Опции темы
En_t_end
Дата 21.1.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Нужен пример конструирования, обмена сообщениями с контекстным меню, созданным для ListControl. Поделитесь, плиз...
PM MAIL ICQ Skype GTalk Jabber   Вверх
Fixin
Дата 21.1.2006, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Цитата(En_t_end @ 21.1.2006, 19:25 Найти цитируемый пост)

ListControl

Это который "listbox"? Сейчас посмотрим...
PM MAIL ICQ   Вверх
Aleksandor
Дата 21.1.2006, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

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



Ну не знаю... у меня есть вот такой обработчик

Код

    case WM_CONTEXTMENU: 
   hPopupMenu=LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENULIST));
   GetCursorPos(&mouse);
   hSubMenu=GetSubMenu(hPopupMenu,0);
   SetMenuDefaultItem(hSubMenu,IDM_PLAIN,FALSE);
   SetForegroundWindow(hwnd);            // To find out more, search for Q135788 in MSDN.
   TrackPopupMenuEx(hSubMenu,0,mouse.x,mouse.y,hwnd,NULL);
   PostMessage(hwnd,WM_NULL,0,0);
   DestroyMenu(hPopupMenu);
    return 0;

// сообщения от меню обрабатываются как обычно.....


и вот такой
Код

BOOL   OnRightClickContact(NMITEMACTIVATE *plvdi)
{
 DWORD menuID;
 HMENU hSubMenu, hPopupMenu;
 LVHITTESTINFO hittest;

//.............................
 ClientToScreen(hwndContactList,&hittest.pt);
 hPopupMenu=LoadMenu(hInst,MAKEINTRESOURCE(IDR_LISTMENU));
 hSubMenu=GetSubMenu(hPopupMenu,0);
 SetMenuDefaultItem(hSubMenu,IDM_REPLY,FALSE);
 SetForegroundWindow(hwndContactList);            // To find out more, search for Q135788 in MSDN.
 menuID=TrackPopupMenu(hSubMenu,TPM_LEFTALIGN|TPM_TOPALIGN|TPM_RETURNCMD,hittest.pt.x,hittest.pt.y,0,hwndContactList,NULL);

   switch (menuID) {

   case IDM_FAWOR:
//............................
  break;

  case IDM_SELECTALL:
//............................
  break;            
           default: break;       }

    
 DestroyMenu(hPopupMenu);
 return TRUE;
}



--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
Fixin
Дата 21.1.2006, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Ну, вроде все как весгда.
PM MAIL ICQ   Вверх
Fixin
Дата 21.1.2006, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Можно через субкласс:
Код

LRESULT CALLBACK ListBoxProc(HWND hwnd, UINT Message,
                         WPARAM wParam, LPARAM lParam)
{
    switch (Message)
    {
    case WM_RBUTTONUP:
        {
            int index = SendMessage(hwnd, LB_ITEMFROMPOINT, 0, lParam);
            POINT point;
            point.x = LOWORD(lParam);
            point.y = HIWORD(lParam);
            ClientToScreen(hwnd, &point);
            HMENU hMenu = LoadMenu(hMainInstance, "MENU1");
            int menuid = TrackPopupMenu(hMenu, TPM_LEFTALIGN|TPM_TOPALIGN|TPM_RETURNCMD, point.x, point.y, 0, hwnd, 0);
            if (menuid == 2)
            {
                if (MessageBox(hwnd, "Are you sure you want to delete this element?", "Submition", MB_YESNO) == IDYES)
                {
                    ListBox_DeleteString(hwnd, index);
                }
            }
            DestroyMenu(hMenu);
        }
        break;
        default:
            return CallWindowProc(OldListBoxProc, hwnd, Message, wParam, lParam);
    }    
}
В прикрепленке все целиком, только что-то меню колбасит, поздно уже smile
Добавлено @ 23:57
В расширении буквы "а" нехватает smile

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  TempProject.rr 1,90 Kb
PM MAIL ICQ   Вверх
En_t_end
Дата 22.1.2006, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот такой глюк:

Это сообщение отредактировал(а) En_t_end - 22.1.2006, 08:45

Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  wazup.jpg 7,95 Kb
PM MAIL ICQ Skype GTalk Jabber   Вверх
Aleksandor
Дата 22.1.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

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



А что это???


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
En_t_end
Дата 22.1.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Aleksandor
Это якобы отображающееся меню на Листе. ЗЫ это вот оно справа, такое кастрированное. Уже и не знаю, что делать.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Aleksandor
Дата 22.1.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

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



А его РОДИТЕЛЬСКОЕ окно точно ListView??
IMHO его что-то затирает.

а пробовал
SetForegroundWindow(hwndListView);
типа
Код

hPopupMenu=LoadMenu(hInst,MAKEINTRESOURCE(IDR_MENULIST));
hSubMenu=GetSubMenu(hPopupMenu,0);
SetForegroundWindow(hwndListView);            


Это сообщение отредактировал(а) Aleksandor - 22.1.2006, 11:34


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
En_t_end
Дата 22.1.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Похожая проблема:
http://pascal.sources.ru/cgi-bin/forum/YaB...;num=1048102287
Только нужно обязательно показать меню из шаблона.
PM MAIL ICQ Skype GTalk Jabber   Вверх
En_t_end
Дата 22.1.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Сенкс всем! Оказалось, надо было не просто тупо создать дерево меню с названием ветки(как делал я), а надо было ещё и и саму ветку сделать субменю.
PM MAIL ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


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

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


 




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


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

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