Поиск:

Ответ в темуСоздание новой темы Создание опроса
> drag'n'drop с одногоCListControlна другойCListCont, КакОтловить_В_OnLButtonUpнаВторомЛисте 
:(
    Опции темы
nmc
Дата 7.4.2009, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как отловить собитие  OnLButtonUp именно на втором листе, чтобы запустить копирование(drag-and-drop) когда нужно

1. листы на форме
2. Где можно посмотреть пример drag-and-drop c одного CListControl на другой CListControl

PM   Вверх
nmc
Дата 7.4.2009, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Уточняю свой вопрос
В OnLvnBegindragList1(NMHDR *pNMHDR, LRESULT *pResult)
получаем 
CString *stroka = (CString*)List.GetItemData(pNMLV->iItem);
что копировать (путь к нужному файлу)

В PreTranslateMessage перехватываем
if(pMsg->message==WM_LBUTTONUP)
{
  вызывается  функция , кототоя копирует файлы/директории на второй List2
}
 Проблема в том копирования присходит даже если LBUTTONUP не над List2

Может определить координаты List2  и только тогда вызывавть функиию через PreTranslateMessage 
То есть как определть координаты или принадлежность point к List (Листы на форме)?????????

Или нужен вообще другой подход ????????

PM   Вверх
Andrey44
Дата 8.4.2009, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



Код

if(pMsg->message==WM_LBUTTONUP && pMsg->hwnd==List2.GetSafeHwnd())
{
    //your code
}



Это сообщение отредактировал(а) Andrey44 - 8.4.2009, 07:09


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
nmc
Дата 9.4.2009, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 List2.GetSafeHwnd() сработало 
но возникла новая сложность
После доработки кода для перемещения  изображение невызывается из PreTranslateMessage  функция копирования файлов/папок
можно ли  в OnLButtonUp отловить то что именно над вторым листом ButtonUp (List2.GetSafeHwnd()==******) или как ее вызвать теперь  из PreTranslateMessage (перестала вызыватся)

OnLvnBegindragList1(NMHDR *pNMHDR, LRESULT *pResult){
.........................
CPoint pt1 = List.GetCaretPos();
m_pDragImage = List.CreateDragImage(number1,&pt1);
if( !m_pDragImage )
        return;

m_bLDragging = TRUE;
m_pDragImage->BeginDrag(0, CPoint(-15,-15));
POINT pt = pNMLISTView->ptAction;
ClientToScreen( &pt );
m_pDragImage->DragEnter(NULL, pt);
SetCapture();
..............................
}
........
.........
OnMouseMove(UINT nFlags, CPoint point)
{

 if (m_bLDragging)
    {
        POINT pt = point;
        ClientToScreen( &pt );
        CImageList::DragMove(pt);
    }
............
}
........
.........
OnLButtonUp(UINT nFlags, CPoint point)
{
  if (m_bLDragging){
        m_bLDragging = FALSE;
        CImageList::DragLeave(this);
        CImageList::EndDrag();
        ReleaseCapture();
        delete m_pDragImage;
                if(????????????????)
                 {
                      функция копирования файлов/папок
                 }

        
       }
}
............
ИЛИ ??????????????????????????????????
PreTranslateMessage(MSG* pMsg) 
{
..............

if(pMsg->message==WM_LBUTTONUP&&pMsg->hwnd==List2.GetSafeHwnd()&&beginDrAndDrop)//не вызывается!!!!!!!
{
   функция копирования файлов/папок
}

.................
}

Это сообщение отредактировал(а) nmc - 9.4.2009, 22:09
PM   Вверх
Andrey44
Дата 10.4.2009, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

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



nmc, во-первых пользуйтесь тэгом код. Ничего-же разобрать нельзя!
Во-вторых 
Код

if(pMsg->message==WM_LBUTTONUP&&pMsg->hwnd==List2.GetSafeHwnd()&&beginDrAndDrop)//не вызывается!!!!!!!
{
   функция копирования файлов/папок
}

beginDrAndDrop = бывает когда нибудь true?
Судя по коду что вы написали не бывает


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
nmc
Дата 10.4.2009, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Проверил beginDrAndDrop 
он здесь не причем, 
в чем тогда может быть причина,
 и если использовать OnLButtonUp можно ли в нем отловить OnLButtonUp над вторым листом
Andrey44  тот же код но с тэгом
Код

 После доработки кода для перемещения  изображение невызывается из PreTranslateMessage  функция копирования файлов/папок
можно ли  в OnLButtonUp отловить то что именно над вторым листом ButtonUp (List2.GetSafeHwnd()==******) или как ее вызвать теперь  из PreTranslateMessage (перестала вызыватся)

OnLvnBegindragList1(NMHDR *pNMHDR, LRESULT *pResult){
.........................
CPoint pt1 = List.GetCaretPos();
m_pDragImage = List.CreateDragImage(number1,&pt1);
if( !m_pDragImage )
        return;

m_bLDragging = TRUE;
m_pDragImage->BeginDrag(0, CPoint(-15,-15));
POINT pt = pNMLISTView->ptAction;
ClientToScreen( &pt );
m_pDragImage->DragEnter(NULL, pt);
SetCapture();
..............................
}
........
.........
OnMouseMove(UINT nFlags, CPoint point)
{

 if (m_bLDragging)
    {
        POINT pt = point;
        ClientToScreen( &pt );
        CImageList::DragMove(pt);
    }
............
}
........
.........
OnLButtonUp(UINT nFlags, CPoint point)
{
  if (m_bLDragging){
        m_bLDragging = FALSE;
        CImageList::DragLeave(this);
        CImageList::EndDrag();
        ReleaseCapture();
        delete m_pDragImage;
                if(????????????????) // как вариант
                 {
                      функция копирования файлов/папок
                 }

        
       }
}
............
ИЛИ ??????????????????????????????????
PreTranslateMessage(MSG* pMsg) 
{
..............

if(pMsg->message==WM_LBUTTONUP&&pMsg->hwnd==List2.GetSafeHwnd())
{
   функция копирования файлов/папок
}

.................
}

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


 




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


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

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