社区
Delphi
帖子详情
顶层窗口与任务栏
larryuan
2000-05-30 02:59:00
form1运行后创建form2,想让form2在顶层,
设置form2的formstyle为fsstayontop,
但只是在form1的顶层,其他程序都可以覆盖它。
又:form2.ParentWindow:=GetDesktopWindow();
可以实现顶层,但form2失去焦点,
而且在任务栏又出现了一个form2的按钮。
如何解决?
解决form2在顶层或是使form2不出现在任务栏均可。
...全文
363
12
打赏
收藏
顶层窗口与任务栏
form1运行后创建form2,想让form2在顶层, 设置form2的formstyle为fsstayontop, 但只是在form1的顶层,其他程序都可以覆盖它。 又:form2.ParentWindow:=GetDesktopWindow(); 可以实现顶层,但form2失去焦点, 而且在任务栏又出现了一个form2的按钮。 如何解决? 解决form2在顶层或是使form2不出现在任务栏均可。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ExitWnidows
2001-08-08
打赏
举报
回复
up
ace
2000-06-01
打赏
举报
回复
CreateParams是在form的CreateWindow之前调用的,不能再调用了..
还会出现在任务栏,应该是你的form2不是toolwindow吧.
还有要焦点的话
在form2的formshow里
SetWindowPos( ... HWND_TOPMOST...)
SetForegroundWindow(...)
larryuan
2000-06-01
打赏
举报
回复
to ace:
在程序中我需要调用updatewindow,
这样form2又出现在任务栏上。
是不是需要在updatewindow前先调用CreateParams,
那如何获得它的参数呢?
larryuan
2000-06-01
打赏
举报
回复
to ace:
谢谢,这样可以基本解决了。但form2还是没有焦点。
ace
2000-06-01
打赏
举报
回复
我的方法:
直接设置form2的parentwindow是不行的
应该重载CreateParams(var Params: TCreateParams),就可以使form2不出现在
任务栏
procedure CreateParams(var Params: TCreateParams); override;
procedure TDragForm.CreateParams(var Params: TCreateParams);
begin
Inherited;
Params.ExStyle := Params.ExStyle or WS_EX_TOOLWINDOW;
Params.WndParent := GetDeskTopWindow;
end;
larryuan
2000-05-31
打赏
举报
回复
to lin:
这样整个应用就在顶层了,但form1还是可以盖住form2,
而且我只想让form2在定层,其它程序可以盖住form1,
类似网络蚂蚁的窗口。
这该如何实现呢?
larryuan
2000-05-31
打赏
举报
回复
to patpat:
试过好象不行
radish
2000-05-31
打赏
举报
回复
可以实现,很久一起我试过,你看看下面的文章再改改就可以了
做一个多主窗口的应用程序
成都 谢慧强 xiehuiqiang@21cn.com
用过DreamWeaver的人都会发现DreamWeaver将每一个编辑的文件显示在任务栏上,并且用户任意关闭一窗口而不影响其他窗口,好象每一个窗口间没有关联,没有主窗口似的。但我们也能发现其实这些窗口间也有数据是共享的,如存盘的路径。
经过研究我发现其实这些窗口其实是属于同一程序的,并且实现方法也非常的简单。下面我用Inprise公司的C++ Builder为大家举一个简单的例子。
首先我们创建一个普通的应用程序。在这个程序中包含两个Form,其中Form1为主窗口,我们将Form2设为不由应用程序自动创建。在Form1中加入一新的Public的属性: int FormCount; 此属性用于记录系统建立的From2的实例的个数,在Form1的OnCreate事件中加入如下代码:
int i=GetWindowLong(this->Handle,GWL_STYLE);
TForm2 *F,*G;
F=new TForm2(NULL);
G=new TForm2(NULL);
F->ParentWindow=GetDesktopWindow();
F->Caption="F";
G->ParentWindow=GetDesktopWindow();
G->Caption="G";
this->FormCount=2;
SetWindowLong(G->Handle,GWL_STYLE,i);
SetWindowLong(F->Handle,GWL_STYLE,i);
F->Show();
G->Show();
//注意,改变FORM的ParentWindow和GWL_STYLE FORM的HANDLE值将改变
其中GetWindowLong,SetWindowLong为获取/设置Window属性的API函数,具体请看C++ Builder带的Win32帮助。然后运行程序,我们就能发现程序在任务栏上显示了属于此程序的三个任务条。 接下来我们要做的事情有两个:
1、 隐藏Form1及Application
2、 让Form2的实例关闭应用程序
实现第一件事情的方法在网上很多地方都提到了,即修改WinMain函数下面是具体的代码(粗斜体为加入的代码):
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->ShowMainForm=false;
ShowWindow(Application->Handle, SW_HIDE);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
在这个地方要注意的是光用"Application->ShowMainForm=false;"是不能隐藏主Form(Form1)的,必须将Form1的Visibled属性变为false。 实现第二件事情需要用到Application的Terminate方法(结束应用程序)。我们只要在TForm2的OnClose事件中简单加入以下几句程序:
if (Form1->FormCount>1)
Form1->FormCount--;
else
Application->Terminate();
运行程序,你就能发现程序在有任务拦上有两个提示,窗口F及窗口G,而且这两个窗口看起来就象独立的应用程序。 至此,一个多主窗口程序就做完了,是不是很简单呢。
Lin
2000-05-31
打赏
举报
回复
Larryuan:
Application.Handle是程序的主窗口,其他所有的窗口都是他的子窗口。使用SetWindowPos(Application.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);应该可以达到目的。
patpat
2000-05-30
打赏
举报
回复
用Api: ShowWINDOW试试 设为TOPMOST
larryuan
2000-05-30
打赏
举报
回复
这个handle是form1还是Application的一个内置窗口?
如何用这个handle?
Lin
2000-05-30
打赏
举报
回复
很好解决:设置Application.Handle所代表的窗口Always on top就可以了。
Qt之程序最小化托盘显示及操作
对于GUI程序,如果想要实现当最小化时,程序从
任务栏
消失,在系统托盘显示一个图标,表示此程序,并能在托盘内通过双击或者菜单使程序界面恢复。
常用MFC界面工具菜单的添加
1、往基于对话框的程序添加菜单: 1 2、往基于Dialog的程序添加工具栏: 1 3、为dialog的工具栏添加工具提示: 2 4、给没有工具栏的
窗口
添加工具栏: 3 5、创建分隔
窗口
: 4 6、“打开”按钮的设置: 4 7、对话框加状态条: 5 8、隐藏程序在
任务栏
的图标: 5 9、无title对话框的移动: 5 10、设置对话框为最
顶层
: 6 11、向对话框
窗口
添加右键菜单: 6 12、托盘菜单不点击不能消失的解决办法: 6
智慧政务专题-如何编制政务
顶层
规划
本课程是在前期《基础通识精解》和《行政审批局模式精解》课程基础上,结合国家政策背景和智慧政务建设痛点,本课程重点解决以下问题: 1、面对复杂的政务业务应用,如何快速响应需求变化,适应政策要求;2、面对多样的公众个性化服务,如何平衡建设标准化产品和个性化的应用;3、面对横向烟囱式职能部门的异构系统,如何打破信息孤岛,提升行政审批效率。 针对以上智慧政务建设过程中的共性问题和障碍,需要通过政务
顶层
规划来统筹设计解决,本课程以实际地级城市政务项目
顶层
规划案例为蓝本分享,抛砖引玉,以期帮助大家提升项目
顶层
统筹能力和减少项目推进阻力。 为了更好的学习本课程并达到良好的效果,建议同时学习智慧城市《数据中台》、《售前管理》、《行业方案》和《城市大脑》系列相关课程,并请持续关注后续课程,谢谢。
《精通Visual C++实效编程280例》光盘源代码
《精通Visual C++实效编程280例》光盘源代码 精通Visual C++实效编程280例(附光盘)的目录介绍 内容介绍 作者介绍 目录介绍 商品目录: 返回商品页面 第1章
窗口
1.1 实例1:通过HWND获得CWnd指针 1.2 实例2:获得应用程序主
窗口
的指针 1.3 实例3:获得指定点的
窗口
1.4 实例4:最大化和最小化
窗口
1.5 实例5:关闭
窗口
1.6 实例6:设置
窗口
的大小和位置 1.7 实例7:居中显示
窗口
1.8 实例8:
顶层
显示
窗口
1.9 实例9:设置
窗口
图标 1.10 实例10:获得和设置
窗口
的标题 1.11 实例11:显示或隐藏
窗口
的标题栏 1.12 实例12:改变
窗口
形状 1.13 实例13:设置
窗口
的透明区域 1.14 实例14:透明
窗口
1.15 实例15:
窗口
闪烁 1.16 实例16:图片
窗口
1.17 实例17:动画
窗口
1.18 实例18:桌面
窗口
1.19 实例19:最小化桌面所有
窗口
1.20 实例20:获取
任务栏
窗口
1.21 实例21:显示或隐藏
任务栏
1.22 实例22:枚举桌面所有
顶层
窗口
第2章 菜单和光标 2.1 实例23:动态添加和删除菜单项 2.2 实例24:在系统菜单中添加和删除菜单项 2.3 实例25:禁用关闭按钮 2.4 实例26:启用和禁用菜单项 2.5 实例27:设置菜单项的检查状态 2.6 实例28:快捷菜单 2.7 实例29:获取光标的坐标 2.8 实例30:限制光标的移动范围 2.9 实例31:自定义光标 2.10 实例32:等待光标 第3章 控制栏 3.1 实例33:创建工具栏 3.2 实例34:设置工具栏标题 3.3 实例35:停靠工具栏 3.4 实例36:设置工具栏位图 3.5 实例37:为工具栏按钮添加文本标签 3.6 实例38:为工具栏按钮添加下拉箭头 3.7 实例39:为工具栏按钮设置热点图像 3.8 实例40:启用或禁用工具栏的工具提示 3.9 实例41:在工具栏中添加组合框 3.10 实例42:创建状态栏 3.11 实例43:在状态栏中添加进度条 3.12 实例44:显示或隐藏工具栏和状态栏 3.13 实例45:使用组合栏 第4章 对话框 第5章 框架和文档视图 第6章 通用控件 第7章 GDI 第8章 文件 第9章 打印 第10章 多线程 第11章 网络 第12章 ADO数据库 第13章 动态链接库 第14章 系统 第15章 设备管理 第16章 数据类型及转换
图形
窗口
始终在顶部:通过确保它们始终保持在顶部,避免遮挡图形
窗口
。-matlab开发
我第一次尝试使用 mex 文件对 user32 库中的“SetWindowPos”函数进行简单调用。 这允许用户将 MATLAB 图形保持在顶部,浮动在所有其他
窗口
之上,即使焦点不在目标
窗口
上。 例子 ... 图1); winontop('图1'); 在 MATLAB 版本 7.0.4.365 (R14) Service Pack 2 上进行测试 操作系统:Microsoft Windows XP 版本 5.1(内部版本 2600:Service Pack 2)
Delphi
5,379
社区成员
262,722
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章