DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: 33227
今日帖子: 17
在线用户: 9
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 wojiaohaoyaping (我叫郝亚平) ▲▲▲▲△ -
普通会员
2016/9/25 16:28:19
标题:
主窗口最小化,其他非主窗口也一起最小化。 浏览:1264
加入我的收藏
楼主: 按照常理,程序的主窗口一旦最小化,该程序的其他所有非主窗口都要一起最小化。
特殊情况下,怎么实现非主窗口不受主窗口最小化的影响:即主窗口最小化了,其他非主窗口依然没有最小化。
----------------------------------------------
-
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2016/9/25 16:58:29
1楼: 把其它窗口的Parent改成Desktop即可。这其实是老生常谈的问题了,在网上多搜搜即可。
----------------------------------------------
只有偏执狂才能生存!
作者:
男 wojiaohaoyaping (我叫郝亚平) ▲▲▲▲△ -
普通会员
2016/9/25 17:13:29
2楼: 确实管用。  

{ 注意:在 OnFormCreate 中调用有效! }
  Winapi.Windows.SetParent(Self.Handle, FindWindowEx(FindWindow('Progman', nil),
    0, 'shelldll_defview', nil));
----------------------------------------------
-
作者:
男 wojiaohaoyaping (我叫郝亚平) ▲▲▲▲△ -
普通会员
2016/9/26 23:11:01
3楼: 可是,刚刚发现,有的时候,这个方法会失效。
明明设置非主窗口的父窗口为桌面了,并且在大多数情况下是可以成功,
但是为什么少数情况下失败呢 ?

继续测试。
----------------------------------------------
-
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2016/9/27 9:09:11
4楼: 用CreateParams吧,例子如下:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
  private
    { Private declarations }
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited;

  Params.ExStyle   := Params.ExStyle or WS_EX_APPWINDOW;
  Params.WndParent := GetDesktopWindow;
end;

end.
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2016/9/27 10:58:30
5楼: 如果是 Win7 开了 AERO,并且窗口是半透明的话,要用SetWindowLong,不要用SetParent
----------------------------------------------
http://mcool.appinn.me/
作者:
男 wojiaohaoyaping (我叫郝亚平) ▲▲▲▲△ -
普通会员
2016/9/27 14:51:12
6楼: 感谢二位提供思路。
----------------------------------------------
-
作者:
男 wojiaohaoyaping (我叫郝亚平) ▲▲▲▲△ -
普通会员
2016/9/28 6:35:46
7楼: CreateParams 的方式,测试可以使用。但是带来了弊端:就是同一个程序,会在任务栏上,同时显示主窗口和非主窗口(已通过CreateParams方式修改父窗口为 Desktop)的两个窗口缩略图叠加一起。非常别扭。

所以,暂时使用了 SetWindowLong 方式,不用 SetParent 方式。@iamdream
----------------------------------------------
-
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2016/12/23 10:28:25
8楼: 在win8/10下失效了,各位有什么好方法?@郝亚平 @孤独骑士 @iamdream
----------------------------------------------
http://mcool.appinn.me/
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2016/12/23 18:08:44
9楼: 搞错,只是在win10 10240版本失效,其他版本都没问题
----------------------------------------------
http://mcool.appinn.me/
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行62.5毫秒 RSS