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

  • 相关阅读:
    java获得两个日期之间的所有月份
    Java设计模式之观察者模式
    SpringMVC项目配置
    Java设计模式之策略模式
    Tomcat源码
    线程池
    java内存模型
    JVM内存结构 JVM的类加载机制
    java虚拟机-垃圾回收算法
    并发容器-ConcurrentHashMap,CopyOnWriteArrayList
  • 原文地址:https://www.cnblogs.com/findumars/p/6278838.html
Copyright © 2011-2022 走看看