Решется проще чем тут писали.
У меня IVideoWindow клент пнели которая лежит на главном окне. Естественно возникло желание таскать окно программы за любую точку.
В итоге в процедре главного окна:
case uMsg of
..........
WM_NCHITTEST: Result:=HTCAPTION;
..........
else
Result:=DefWindowProc(hwnd,uMsg,wParam,lParam);
end;
В процедуре панели на которой лужит IVideoWindow
case uMsg of
WM_NCHITTEST: Result:=HTTRANSPARENT;
..................
WM_MOUSEFIRST..WM_MOUSELAST:
begin
Cp:=Point($FFFF and LPARAM,LPARAM shr 16);
ClientToScreen(hFrameWnd,Cp);
with Cp do
PostMessage(hMainWnd,(uMsg and $F) or $A0,HTCAPTION,MakeLParam(X,Y)); ///hMainWnd — хэндл главного окна
Result:=0;
end;
.....................
else
Result:=DefWindowProc(hwnd,uMsg,wParam,lParam);
end;
Ну и само собой, при настройке вдеоокна:
FVideoWindow.put_Owner(hPanelWnd);
FVideoWindow.put_MessageDrain(hPanelWnd);
И все работает. Сообщения мышки насквозь.