2008-10-16 4 views
1

Как бы я перетащил что-то в статический элемент управления? Похоже, мне нужно создать подкласс класса COleDropTarget и включить его как переменную-член в пользовательскую CStatic. Однако это не работает. Когда я пытаюсь перетащить что-то на элемент управления Static, я получаю курсор, отклоненный курсором.Как перетащить что-то в элемент управления Static?

ответ

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().