Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Visual C++.NET
Урок 34. Drag-n-drop в интерфейсе Проводника

Если мы делаем Drag-n-drop в программе с разделенным сплиттером окном, то по умолчанию перетаскиваемые в программу файлы попадают в окно-рамку и там же мы по идее и можем сделать соответствующий обработчик. Но по логике обработчик у нас должен быть в одном из видов - левом (CTreeView) или правом (CListView). На этом уроке мы посмотрим, как правая часть нашего окна может принимать файлы.

Вот что мы должны для этого сделать:

Сначала мы добавим вызов DragAcceptFiles в метод класса окна-рамки (для того, чтобЫ правая часть нашей программы могла принимать файлы):

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
 
     CCreateContext* pContext)
 
 {
 
   ...
 
   GetRightPane()->DragAcceptFiles(); 
 
   return TRUE;
 
 }

После чего добавляем обработчик для сообщения WM_DROPFILES для правого вида. Для этого мы в окне Properties нажимаем на кнопку Messages и в списке сообщений Windows выбираем WM_DROPFILES:

Добавление обработчика для WM_DROPFILES

Вот текст добавляемого обработчика:

void CShortcutsTestView::OnDropFiles(HDROP hDropInfo)
 
 {
 
   // TODO: Add your message handler code here and/or call default
 
   //Показываем полный путь.
 
   char sPath[MAX_PATH];
 
   DragQueryFile(hDropInfo, 0, sPath, sizeof(sPath));
 
   AfxMessageBox(sPath);
 
   //Показываем точку, в которой отпустили.
 
   CPoint *point = new CPoint;
 
   DragQueryPoint(hDropInfo, point);
 
   CString s;
 
   s.Format("%d, %d", point->x, point->y);
 
   AfxMessageBox(s);
 
   CListView::OnDropFiles(hDropInfo);
 
 }

В данном обработчике мы просто показываем в messagebox'ах полное имя перетаскиваемого файла и точку, в которой мы бросаем перетаскиваемый файл. настоящей программе, разумеется, мы напишем в этом обработчике что-нибудь более осмысленное.

Обратите внимание, что когда мы перетаскиваем файл из Проводника Windows, то иконка перетаскиваемого файла будет разная в левой части нашей программы и в правой. В левой части иконка будет показана перечеркнутым кругом, показывающим, что перетаскивание запрещено, а в правой - в виде стрелки с прямоугольничком, показывающим, что перетаскивание разрешено.



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS