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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2009, 08:39   #1
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
По умолчанию GetKeyState

Привет.
Дело вот как обстоит:
По нажатию shift + пункта попап меню , должен происходить драг н дроп, причем драгганутый элемент должен вставиться как TVI_FIRST, иначе как TVI_LAST.

Код:
void CVerticalTree::OnMoveAsChild()
{   
	// Check that the dragged item is not an ancestor
	HTREEITEM htiParent = m_hitemDrop;
	while( (htiParent = GetParentItem( htiParent )) != NULL )
		if( htiParent == m_hitemDrag ) return;
	Expand( m_hitemDrop, TVE_EXPAND ) ;
	

	HTREEITEM htiNew;
	if (GetKeyState(VK_SHIFT)) htiNew=CopyBranch(m_hitemDrag,m_hitemDrop, TVI_FIRST);
	else  htiNew=CopyBranch(m_hitemDrag,m_hitemDrop, TVI_LAST); 
	

	DeleteItem(m_hitemDrag);
	SelectItem( htiNew );
	CVerticalTree::m_AddItemEvent=TRUE; 
	CVerticalTree::ExpandAll();
	Invalidate();
}
Если сначала нажимать shift и опустить прежде чем нажимать пункт меню, то всё работает отменно, но если удерживать shift после нажатия пункта меню, то он неправильно будет вести себя. Есть ли событие удерживание клавиши? или предложите свои варианты...
Спасибо.

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск