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

  • 相关阅读:
    union 和 union all 区别
    sql 日期类型空值等于 1900-01-01
    IDENTITY_INSERT 自增开关使用
    Convert.ToDateTime() 与 DateTime.TryParse()区别
    SOLID 原则摘录
    不同JavaScript 代码段 变量作用域
    sql 常见错误总结
    jquery.form插件 提交表单 type="hidden"取不到值的问题记录
    同义词
    SQL优化传送门
  • 原文地址:https://www.cnblogs.com/findumars/p/6278838.html
Copyright © 2011-2022 走看看