Я пытаюсь создать механизм, позволяющий пользователю щелкнуть правой кнопкой мыши и перетащить панель инструментов, чтобы переместить окно ...
Это очень сложно доказать:
В настоящее время я не получаю событие HTCAPTION, которое я уже видел действительно полезным постом!
Не получает WM_NCHitTest в строке заголовка
Предложение / альтернатива здесь состоит в том, чтобы использовать WMNCMouseMove и осмотреть HitTest, чтобы увидеть, является ли это заголовком. Так наивно я предполагал, что мог бы расширить эту идею, чтобы использовать WMNCMButtonDown (вместо этого), чтобы сделать меня еще на шаг ближе!
Если бы это работало, тогда я мог бы получить тип клика, то есть левый, правый, средний, двойной или одинарный! Это позволило бы мне как-то сказать Windows, что я хочу, чтобы это распознавалось как событие перетаскивания.
Беда в том, что я никогда не получаю WM_NCMBUTTONDOW:
void __fastcall TForm1::Dispatch( void* message )
{
switch ( static_cast<TMessage*>( message )->Msg )
{
case WM_NCHITTEST:
{
TWMNCHitTest &Message = *static_cast<TWMNCHitTest*>( message );
WMNCHitTest( Message );
break;
}
case WM_NCMOUSEMOVE:
{
TWMNCMouseMove &Message = *static_cast<TWMNCMouseMove*>( message );
WMNCMouseMove( Message );
break;
}
case WM_NCMBUTTONDOWN:
{
TWMNCMButtonDown &Message = *static_cast<TWMNCMouseMove*>( message );
WMNCMButtonDown(Message);
break;
}
default:
{
TForm::Dispatch(message);
break;
}
}
}
у кого-нибудь есть идеи ??
Стоит отметить, что я действительно получаю другие типы сообщений (WM_NCHITTEST && WM_NCMOUSEMOVE), поэтому механизм работает правильно.
Пожалуйста, любые идеи будут высоко оценены !!
Спасибо
Джо