zoukankan      html  css  js  c++  java
  • 窗体Form的FormStyle属性设置为fsStayOnTop时属性设置不起作用问题探讨。

    这个问题是这样的:

    在应用程序中加载两个窗体,一个是模态的,另一个是非模态窗体。其中非模态窗体的属性设置为fsStayOnTop就是让其一直在前方显示。这样的效果就是在操作模态窗体的时候,可以看得到非模态窗体,但是不可以操作非模态窗体,这样的效果是正确的。但是当程序执行某些操作之后,比如发了某个windows消息之后,这样的状态就会发生改变,导致非模态窗体不能正常显示。

    问题是系统消息发送之后窗体的FormStyle属性依然为fsStayOnTop但是就是不在前方显示,此问题相当恶心啊。如果设置为模态窗体则当这个窗体出现的时候就不能操作其他窗体,设置为非模态的则会导致没有获得焦点时可以处于最上面,但一旦获取焦点,就被mainform遮住了 设置成fsStayOnTop好象没有什么作用。

    研究了一段时间,也用度娘度了好久,才找到一个合适的解决方案。现在共享出来,希望大家遇到之后能迅速解决~~

    重载窗体的这个方法,然后在这个方法中指定窗体的句柄。

    procedure CreateParams(var Params: TCreateParams); override; 
    procedure MainForm.Createparams(var Params: TCreateParams);
    begin
      inherited;
      With Params do
      begin
        WndParent := Application.MainForm.Handle;
        Params.ExStyle := WS_EX_TOPMOST;
      end;
    end;

    这样之后,程序便可以顺利执行了。这是强制指定窗体的扩展属性啊!

    好的代码像粥一样,都是用时间熬出来的
  • 相关阅读:
    接口和抽象类的区别
    MFC之ListCtrl动态添加按钮
    C++类间转换之dynamic_cast
    字符串提取
    C++实现快速排序
    MFC中CListCtrl类依靠CImageList贴图并显示不同图像
    北工大耿丹学院16级计科院3班C语言课程助教学期总结
    C语言课程2——我们交流的工具:Coding.net
    salt-minion安装脚本
    zabbix邮件报警脚本
  • 原文地址:https://www.cnblogs.com/jijm123/p/14053080.html
Copyright © 2011-2022 走看看