Je voudrais avoir ma propre barre de légende et donc j'utilise essentiellement un panneau (Nom: pnCaption) et supprimer la barre de légende d'origine dans CreateParams. Mais la possibilité de déplacer la fenêtre par MouseDown-MouseMove dans le nouveau panneau est un problème.Déplacement d'une fenêtre sans légende en utilisant une "zone de glissement"
Normalement, vous utiliseriez le message NCHITTEST. MAIS ceci n'est pas signalé si la souris est sur le panneau (ma propre légende). Voir code ...
procedure TForm1.CreateParams(var params: TCreateParams);
begin
inherited Createparams(Params);
with Params do
Style := (Style or WS_POPUP) and (not WS_DLGFRAME);
end;
procedure TForm1.WM_NCHitTest(var Msg: TWMNcHitTest);
begin
inherited;
if PtInRect(pnCaption.BoundsRect, ScreenToClient(Point(Msg.XPos, Msg.YPos)))
then Msg.Result := HTCAPTION;
end;
J'apprécierais tous les conseils pour accomplir cette tâche.
Christian
$ F012 est 'SC_MOVE' avec $ 0002 OR avec. Les 4 bits de poids faible ($ 0000- $ 000F) de 'WM_SYSCOMMAND' sont utilisés par le système d'exploitation en interne. Dans ce cas, $ 0002 signifie que le bit Drag est activé. –
Super - c'est exactement ce que je cherchais. Je vous remercie. – Christian
@Remy: merci. C'est le peu d'information de fond que je n'ai jamais eu :-) –