Cita:
Empezado por roman
¡Ah! Ok. Entonces la parte del MouseActivate sale sobrando ¿no?
|
Bueno, relativamente. Si lo escribimos de la siguiente manera, funcionan los menús:
Código Delphi
[-]procedure TForm1.WndProc(var Message: TMessage);
begin
case Message.Msg of
WM_MOUSEACTIVATE:
begin
if Lo(Message.lParam) = HTMENU then
Message.Result:= MA_ACTIVATE
else if Lo(Message.lParam) = HTCAPTION then
Message.Result := MA_NOACTIVATEANDEAT
else
Message.Result:= MA_NOACTIVATE;
exit;
end;
WM_WINDOWPOSCHANGED:
begin
SetWindowPos(Handle, GetBackForm(self).Handle, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);
exit;
end;
end;
inherited WndProc(Message);
end;
Cita:
Empezado por roman
¿Cuál es el efecto raro en pcs viejos?
|
El efecto es que si el PC es lento se aprecia sutilmente que la ventana principal se activa y luego se va hacia atrás. Se aprecia una aparición rápida y fugaz de los bordes del MainForm si se solapan con ventanas secundarias. Es por eso que incluí WM_MOUSEACTIVATE, con sus efectos secundarios, y el motivo por el que anuncié que no me terminaba de convencer.
Saludos.