Delphi子窗体默认最小化到桌面而不是任务栏,跟Application对象有什么关系?Application是子窗体的父窗体?跟这有关吗?

ooolinux 2023-03-06 20:04:18

我记得Delphi的Application是一个0像素的窗口

...全文
100 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

参考:https://learn.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles
WS_EX_APPWINDOW Forces a top-level window onto the taskbar when the window is visible.
0x00040000L

ooolinux 2023-03-09
  • 举报
回复
@日立奔腾浪潮微软松下联想 OK~
  • 打赏
  • 举报
回复

有一点关系,VCL程序中所有的窗体都是Application内部建立的一个隐藏窗体的子窗体,所以用户程序建立的第一个窗体并非真正的主窗体(虽然Application.MainForm指向它)。
要让子窗体最小化到任务栏也很简单,只要建立的时候:
SetWindowLongPtr(Form2.Handle, GWL_EXSTYLE,
GetWindowLongPtr(Form2.Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
即可。

ooolinux 2023-03-07
  • 举报
回复
@日立奔腾浪潮微软松下联想 为什么默认情况下子窗体会最小化到桌面?
ooolinux 2023-03-07
  • 举报
回复
@日立奔腾浪潮微软松下联想 这个代码比较方便,我原来用 void __fastcall TForm2::CreateParams(Controls::TCreateParams &Params) { TForm::CreateParams(Params); Params.WndParent = HWND_DESKTOP; }
  • 举报
回复
@ooolinux 只能说windows shell的设计就是这样,没有任务栏窗口的窗体最小化之后怎么办,总不能消失不见吧,用户就无法恢复了
3条回复

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧