void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
WPARAM wParam = 0;
if (Shift.Contains(ssShift))
{
wParam |= MK_SHIFT;
}
if (Shift.Contains(ssCtrl))
{
wParam |= MK_CONTROL;
}
if (Shift.Contains(ssLeft))
{
wParam |= MK_LBUTTON;
}
if (Shift.Contains(ssRight))
{
wParam |= MK_LBUTTON;
}
if (Shift.Contains(ssRight))
{
wParam |= MK_RBUTTON;
}
if (Shift.Contains(ssMiddle))
{
wParam |= MK_MBUTTON;
}
TPoint pt(X, Y);
pt = ActiveXControl->ParentToClient(pt, this);
LPARAM lParam = pt.x | (pt.y << 16);
::SendMessage(ActiveXControl->Handle, WM_MOUSEMOVE, wParam, lParam);
}
ActiveX controls in BCB6
В специальных контейнерах для тестирования ActiveX контролов - все работает как и задумывалось.
Теперь идем в Builder6.0. Там есть пункт меню (что то вроде)
Components->Install ActiveX Components.
Воспользовавшись этим пунктом - настраиваю в палитре компонентов в билдере этот контрол. Кидаю его на форму - все отображается прекрасно. Но вот сообщения о движениях мыши ни в какую в этот контрол не приходят и не обрабатываются.
Что делать? Как научить этот контрол получать сообщения от мыши, когда он лежит на форме?
Код:
Но ведь это же такое уродство! Есть ли другой способ научить форму не перехватывать сообщения от мыши, когда мышь находится над окном данного ActiveX контрола?