Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Отменить Perform(WM_SYSCOMMAND,SC_DRAGMOVE, 0)


Автор: SerK 24.12.2009, 02:13
Вопрос следующий:

при нажатии мыши компонент может перемещаться с помощью такого кода:

 
Код

const int SC_DRAGMOVE = 0xF012;
ReleaseCapture();
 pcomp->Perform(WM_SYSCOMMAND,SC_DRAGMOVE, 0);


Как мне отменить это перемещение?

Автор: mrbrooks 24.12.2009, 09:20
Цитата(SerK @  24.12.2009,  02:13 Найти цитируемый пост)
Как мне отменить это перемещение? 

если вопрос идет об возвращении на исходное положение - то либо сохранять первоначальные настройки контрола, либо использовать технологию Drag&Drop.

Автор: artsb 24.12.2009, 09:37
SerK, в каком смысле отменить перемещение? Вернуть компонент на место? Или вообще, запретить его перемещать? Или ещё что?

Автор: SerK 24.12.2009, 10:56
Цитата(artsb @  24.12.2009,  09:37 Найти цитируемый пост)
в каком смысле отменить перемещение? Вернуть компонент на место? Или вообще, запретить его перемещать? Или ещё что?


- когда мне надо, запретить перемещение, т.е, в определенный момент отменить перемещение, чтобы компонент нельзя было бы перемещать. 

Автор: mrbrooks 24.12.2009, 11:04
Цитата(SerK @  24.12.2009,  10:56 Найти цитируемый пост)
когда мне надо, запретить перемещение, т.е, в определенный момент отменить перемещение, чтобы компонент нельзя было бы перемещать.

обычно при перемещении контрола по форме (в MouseDown )делают так:
Код

 if(Shift.Contains(ssAlt))
{ 
 ReleaseCapture();
 pcomp->Perform(WM_SYSCOMMAND,0xF102, 0);
}


то есть без нажатия на alt (по выбору) перемещения не будет

Автор: SerK 25.12.2009, 14:17
mrbrooks,

спасибо, понял - нужно ставить флаг.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)