Как перетащить что-нибудь в элемент управления Static? - PullRequest
1 голос
/ 16 октября 2008

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

Ответы [ 2 ]

2 голосов
/ 16 октября 2008

Статический элемент управления m_hWnd должен быть действительным при вызове COleDropTarget::Register, поэтому он не работает из вашего CMyStatic конструктора. Что вы можете сделать, так это переопределить CWnd::PreSubclassWindow в вашем CMyStatic классе:

class CMyStatic : public CStatic {
    ...
    virtual void PreSubclassWindow();
};

void CMyStatic::PreSubclassWindow()
{
    CStatic::PreSubclassWindow();

    m_MyDropTarget.Register(this);
}

Здесь действительно хорошая статья здесь о CodeProject, которая может оказаться вам полезной.

1 голос
/ 20 января 2013

В дополнение к дополнению PreSubClassWindow (), вы также должны установить свой элемент управления CStatic, чтобы флаг Notify был установлен в его параметрах ресурса. В противном случае элемент управления не сообщит приложению о движениях мыши и, следовательно, не вызовет метод OnDragEnter ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...