|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Дочерний диалог в диалоге
Имеется диалог, в который встроен ещё один (дочерний), напоминает SheetPage. На дочернем диалоге имеется контрол Edit (не TEdit) со стилем WS_EX_ACCEPTFILES, его я сабклассирую, чтобы перхвать очередь сообщений и перехватить сообщение WM_DROPFILES. Проблема в том, что именно это сообщение и не ловится. Если я ставлю ловушку на весь диалог, то сообщение в диалоге нормально ловится. Кто знает, в чём загвоздка?
Код:
// сабклассирование Edit-а ... case Msg of WM_DROPFILES : try if DragQueryFile(wParam, 0, FileName, MAX_PATH) > 0 then begin SendMessage(GetParent(Wnd), WM_COMMAND, ID_BTNFILE, 0); DragFinish(wParam); Exit; end; finally DragFinish(wParam); end; end; ... // дочерний диалог WM_INITDIALOG : begin ... // не нужно, но так на всякий случай // в ресурсном файле, этот флаг уде установлен DragAcceptFiles(GetDlgItem(hWndDlg, ID_EDTFILE), True); // subclass the drag-drop edit control hEditPrev := Pointer(GetWindowLong(GetDlgItem(hWndDlg, ID_EDTFILE), GWL_WNDPROC)); SetWindowLong(GetDlgItem(hWndDlg, ID_EDTFILE), GWL_WNDPROC, Longint(@EditWndProc)); SetWindowLong(GetDlgItem(hWndDlg, ID_EDTFILE), GWL_EXSTYLE, GetWindowLong(GetDlgItem(hWndDlg, ID_EDTFILE), GWL_EXSTYLE) or WS_EX_ACCEPTFILES); ... end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#2
|
||||
|
||||
Причина оказалась до смешного простой. В ресурсном файле первым в списке находился GroupBox, он и мешал. Перенос его вниз списка решил проблему.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |