C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Использование Esc для отмены drag-n-drop / TreeCtrl, TreeView / Элементы управления

Использование Esc для отмены drag'n'drop

Все просто, как 123*34: перехват сообщения WM_KEYDOWN в виртуальном методе PreTranslateMessage(). Надо только сделать еще одну вещь, чтобы это работало на 100%: вызвать SetFocus() в Вашем обработчике WM_LBUTTONDOWN. Если дерево не имеет фокуса когда начинается операция drag'n'drop, оно вообще не получает фокуса и сообщение WM_KEYDOWN не приходит:


BOOL CTreeCtrlX::PreTranslateMessage(MSG* pMsg)
{
	if( pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE 
					&& m_bLDragging)
	{
		m_bLDragging = 0;
		CImageList::DragLeave(NULL);
		CImageList::EndDrag();
		ReleaseCapture();
		SelectDropTarget(NULL);
		delete m_pDragImage;
		return TRUE;	
	}

	return CTreeCtrl::PreTranslateMessage(pMsg);
}

 

Источник: ProtoSphere