Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2009, 01:33   #1
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию Drag&Drop COleDropTarget

Приветствую. Вот сижу и не понимаю. Такое ощущение что обработчики COleDropTarget OnDragEnter и другие воообще не получают управления, а над окном (кооторое регистрируется) сразу получаю курсор "отрицания", что файл не может быть сброшен на данное окно. Система такая, реализовал свой CDropTarget на основе COleDropTarget, окно "применик" это дочерное окно со стилем WS_CHILD наследовано от CFrameWnd
Код:
// создание дочернего окна, его обработчик
int CWndXXX::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
  CFrameWnd::OnCreate(lpCreateStruct);
  ...
  dropTarget.Initialize(this);
}
Реализация CDropTarget
Код:
#include <afxwin.h>
#include <afxdisp.h>
#include <afxole.h>

class CDropTarget: protected COleDropTarget
{
public:
	CDropTarget();
	virtual ~CDropTarget();

	BOOL Initialize(CWnd *pWnd);

protected:
	DROPEFFECT OnDragEnter(CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point);
	DROPEFFECT OnDragOver(CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point);
	BOOL OnDrop(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point);
	void OnDragLeave(CWnd* pWnd);
};
Код:
CDropTarget::CDropTarget()
{
}

CDropTarget::~CDropTarget()
{
}

BOOL CDropTarget::Initialize(CWnd *pWnd)
{
	return Register(pWnd);
}

DROPEFFECT CDropTarget::OnDragEnter(CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point)
{
	TRACE("OnDragEndter\n");
	return DROPEFFECT_LINK;
}

DROPEFFECT CDropTarget::OnDragOver(CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point)
{
	TRACE("OnDragOver\n");
	return DROPEFFECT_LINK;
}

void CDropTarget::OnDragLeave(CWnd* pWnd)
{
	TRACE("OnDragLeave\n");
	COleDropTarget::OnDragLeave(pWnd);
}

BOOL CDropTarget::OnDrop(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point)
{
	TRACE("OnDrop\n");
	return TRUE;
}
В течении работы, при попытке перетащить файл с десктопа в дочернее окно, ниодин TRACE не сработал.
Может кто знает, в чем проблема ?

Edit:
Создал простое приложение, попробовал эту реализацию Drag&Drop , все прекрасно работает. В моем приложении есть и opengl, и многое другое, но что служит причиной не работаспособности ((

Edit:
Спасибо всем! Проблема в том, что, я статически вбиваю в манифест на запрос прав админа requireAdministrator, вместо того, чтобы сделать asInvoker и в момент когда нужны права запрасить их. Сделал asInvoker, все работает на ура.

Последний раз редактировалось BOBAH13; 09.10.2009 в 14:08.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Drag&Drop в Delphi Ruska882009 Компоненты Delphi 4 13.03.2011 02:42
Drag&Drop из TStringGrid Sergey2 Компоненты Delphi 2 01.09.2009 23:02
Нужна помощь (Drag-And-Drop & Drag-Abd-Dock)) Arkuz Общие вопросы Delphi 1 18.04.2009 00:15
Drag&Drop shtuceron Общие вопросы Delphi 3 09.04.2008 19:04