Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

Использование 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



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS