help! WM_MENUDRAG, а дальше?
От: v_king Россия http://v-king.narod.ru
Дата: 02.04.04 09:03
Оценка:
А теперь помогите!!!

Не нашел ни одного вразумительного примера,
как перетащить в [PopupMenu] его [Item] в нем
же с одной позиции на другую!
неужели нужен механизм DoDragDrop()

если да, то как сделать быстрее?
-the world is infinite and cognizable-
Re: help! WM_MENUDRAG, а дальше?
От: v_king Россия http://v-king.narod.ru
Дата: 06.04.04 08:25
Оценка:
Интересно, а много без ответа валяется вопросов?
Никто не знает или лень ответить?
-the world is infinite and cognizable-
Re[2]: help! WM_MENUDRAG, а дальше?
От: GDI Россия  
Дата: 06.04.04 09:04
Оценка:
Hello, v_king! Вы писали:

v> Интересно, а много без ответа валяется вопросов?

v> Никто не знает или лень ответить?

Ну схема примерно такая:
(псевдокод)

bool bDrag=false;
bool bDown=false;
int nDown=-1;

CMyMenu::OnLButtonDown(..., CPoint point)
{
     bDown=true;
     nDown=GetItemIndex(point); // индекс перетаскиваемого
}

CMyMenu::OnMouseMove(..., CPoint point)
{
     if (bDown) {
          bDrag=true; // перетаскивание
     }
}

CMyMenu::OnLButtonUp(..., CPoint point)
{
     if (bDrag) {
          int nIndex=GetItemIndex(point); // куда вставить
          if (nIndex!=nDown) {
               InsertItem(/*from*/nDown, /*to*/nIndex);
          }
         bDrag=false;
         bDown=false; 
        return;
    }
    CMenu::OnLButtonUp(...);
}


Я думаю идея ясна.
Posted via RSDN NNTP Server 1.8 beta
Re[3]: help! WM_MENUDRAG, а дальше?
От: v_king Россия http://v-king.narod.ru
Дата: 06.04.04 15:24
Оценка:
Здравствуйте, GDI, Вы писали:
GDI>Я думаю идея ясна.

Мда...
Уважаемый, а есть возможность стандартного сабклассинга
для PopupMenu, имеющего в дескрипторах не HWND, а HMENU
(для перехвата сообщений типа WM_LBUTTONDOWN) ?!?!

я конечно попробовал после визуализации меню взять
дескриптор окна через WindowFromPoint(pt) и перехватил
оконную процедуру, но она принимала собщения только
создания и разрушения окна меню, а WM_MOUSEMOVE
(и подобные) умерли в глубине Винды :((

пришлось вернуться к разбору реализации DoDragDrop :(
-the world is infinite and cognizable-
Re[4]: help! WM_MENUDRAG, а дальше?
От: GDI Россия  
Дата: 06.04.04 16:35
Оценка:
Hello, v_king! Вы писали:

v> я конечно попробовал после визуализации меню взять дескриптор окна

v> через WindowFromPoint(pt) и перехватил оконную процедуру, но она
v> принимала собщения только создания и разрушения окна меню, а
v> WM_MOUSEMOVE (и подобные) умерли в глубине Винды (
v> пришлось вернуться к разбору реализации DoDragDrop



Это я ступил! Что-то я подумал, что CMenu — это наследник от CWnd, а оказалось CObject.
Я где-то видел реализацию Drag'n'Drop menu, но за ненадобностью упустил из виду. Думаю на codeguru/codeproject/sourceforge есть что-то подобное.
Posted via RSDN NNTP Server 1.8 beta
Re[5]: help! WM_MENUDRAG, а дальше?
От: v_king Россия http://v-king.narod.ru
Дата: 07.04.04 07:59
Оценка:
в любом случае спасибо
(хотя я с CMenu и не работаю, тк
пишу на WTL, а не MFC)

в принципе D-n-D я уже сделал, конечно
не совсем профессоинально, но меню итемы
таскаются нормально.

жаль, что по D-n-D нет цельного примера,
чтоб с нуля сеть и написать....
-the world is infinite and cognizable-
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.