Как бы я перетащил что-то в статический элемент управления? Похоже, мне нужно создать подкласс класса COleDropTarget и включить его как переменную-член в пользовательскую CStatic. Однако это не работает. Когда я пытаюсь перетащить что-то на элемент управления Static, я получаю курсор, отклоненный курсором.Как перетащить что-то в элемент управления Static?
1
A
ответ
2
Статический контроль m_hWnd
должен быть действительным, когда вы вызываете COleDropTarget::Register
, поэтому он не работает из вашего конструктора CMyStatic
. Что вы можете сделать, это переопределить CWnd::PreSubclassWindow
в пределах вашего CMyStatic
класса:
class CMyStatic : public CStatic {
...
virtual void PreSubclassWindow();
};
void CMyStatic::PreSubclassWindow()
{
CStatic::PreSubclassWindow();
m_MyDropTarget.Register(this);
}
Там действительно хорошая статья here на CodeProject, которые вы можете найти полезным.
1
В дополнение к дополнению PreSubClassWindow() вы также должны установить свой элемент управления CStatic для установки флага Notify в его параметрах ресурса. В противном случае элемент управления не позволит приложению знать о перемещениях мыши и, следовательно, не запускает метод OnDragEnter().