从FMX发布开始,一直有这问题,大家看看是不是一个bug,应该如何修复?
新建一个FMX Application,运行后,点击窗口标题栏右上角的“最大化”按钮,此时窗口是最大化的。
在windows最底端的任务栏中,点击该程序,窗口就会还原回原来的大小。按理应该是还保持最大化才对。
另外,在任务栏中,点击该程序,窗口不会最小化。
改了下代码,总算是解决了。
FMX.Platform.Win.pas
procedure TPlatformWin.Activate(const AForm: TCommonCustomForm);
var
Wnd: HWND;
begin
exit; // 解决在Windows任务栏中,点击窗口图标时,无法缩小、放大
Wnd := FormToHWND(AForm);
2315行,WM_WINDOWPOSCHANGING消息前,加上
WM_SHOWWINDOW:
begin
if (wParam = SW_SHOWNORMAL) and (lParam = SW_MAXIMIZE) then
begin
if LForm.WindowState = TWindowState.wsMaximized then
begin
Winapi.Windows.ShowWindow(hWnd, SW_SHOWMAXIMIZED);
exit;
end;
end;
Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
end;
主要是解决当窗口是最大化状态时,缩小到Windows任务栏,再restore窗口时,窗口自动由最大化变成了Normal。这个地方解决的不是很科学,这种处理方法可能也不是很正确。测试了达到我的要求了。
http://bbs.2ccc.com/topic.asp?topicid=517692