zoukankan      html  css  js  c++  java
  • FMX+Win32,窗口无法保持原样,应该是个bug

    从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

  • 相关阅读:
    康托展开
    Linux Command Line Basics
    hihoCoder 1401 Registration
    C++ 参考网站
    Linux 下的常用工具
    SQL 命令
    GNU MAKE 笔记
    一道基本的计算几何题
    uva 1451 平均值
    bzoj 1826 缓存交换
  • 原文地址:https://www.cnblogs.com/findumars/p/6278838.html
Copyright © 2011-2022 走看看