ngthtra Ответов: 1

Как определить, в какое текстовое поле перетаскивается файл?


Всем привет,

У меня есть приложение MFC dialog C++ в VS2010, и мое приложение имеет два текстовых поля-исходную папку(txtSrcfolder) и целевую папку(txtDesFolder), поэтому, когда я перетаскиваю файл в txtxDesFolder, я хочу назначить полный путь к файлу txtDesFolder и то же самое для txtSrcFolder.
Но как определить, какое текстовое поле перетаскивается?
(если есть только одно текстовое поле, я могу справиться с ним, но со многими элементами управления я не могу)

Вы можете мне помочь, пожалуйста?

1 Ответов

Рейтинг:
11

Eugen Podsypalnikov

Попробуйте передать указатель коробки в этот тест :) :

/*static*/ bool CYourDialog::TestDropWnd(CWnd* pcWndTest)
{
  CPoint cPoint;
  if (::GetCursorPos(&cPoint)) {
    return (pcWndTest == CWnd::WindowFromPoint(cPoint));
  }
  return false;
}


ngthtra

как использовать этот код?

Eugen Podsypalnikov

При вашем "отброшенном" событии вызовите этот тест для обоих ящиков (передайте их указатели). Функция вернет true, если под мышкой находится тестовое поле :)

ngthtra

так Какой же параметр pcWndTest будет введен? Я использую CAppDlg::OnDropFiles(HDROP hDropInfo) {}, чтобы получить путь к папке

Eugen Podsypalnikov

В контексте вашего диалога:
bool bDroppedOnSrcBox(GetDlgItem(IDC_SRC_BOX)); // IDC_SRC_BOX-идентификатор ресурса ящика
bool bDroppedOnTrgBox(GetDlgItem(IDC_TRG_BOX)); // IDC_TRG_BOX-идентификатор ресурса ящика