子窗口最小化时无法在任务栏上显示

d98531 2013-01-01 12:04:56
一个工程有两个窗口,一个主窗口(A)和一个子窗口(B),点击A的最小化按钮可以正常地最小化,但是点击B的最小化按钮只能最小化到屏幕左下角。我希望实现B也可以最小化到任务栏上。

已知http://bbs.csdn.net/topics/3556此贴中的办法无效。

求解决办法,谢谢!
...全文
1130 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
银点 2013-01-04
  • 打赏
  • 举报
回复
引用 6 楼 d98531 的回复:
引用 3 楼 silverpot 的回复:1、干脆取消子窗口的最小化 2、拦截子窗口的WM_SYSCOMMAND消息。然后SendMessage给主窗口.wParam = SC_MINIMIZE 请问用VCL怎么做到这样?
1、重载子窗口的WindowProc函数 2、在WindowProc里只处理WM_SYSCOMMAND 即只要收到WM_SYSCOMMAND 并且 wParam = SC_MINIMIZE时,直接向主窗口SendMessage(主窗口句柄,WM_SYSCOMMAND ,SC_MINIMIZE,0)然后直接返回 3、其它消息直接Dispatch
hyz_cs 2013-01-02
  • 打赏
  • 举报
回复
子窗口中... .h

private:
        void __fastcall CreateParams(TCreateParams & Params);  
.cpp

void __fastcall TForm2::CreateParams(TCreateParams & Params)
  {   
     TForm::CreateParams(Params);
     Params.ExStyle   |=   WS_EX_APPWINDOW;
     Params.WndParent   =   GetDesktopWindow();
  }

d98531 2013-01-02
  • 打赏
  • 举报
回复
引用 3 楼 silverpot 的回复:
1、干脆取消子窗口的最小化 2、拦截子窗口的WM_SYSCOMMAND消息。然后SendMessage给主窗口.wParam = SC_MINIMIZE
请问用VCL怎么做到这样?
d98531 2013-01-02
  • 打赏
  • 举报
回复
引用 2 楼 CppFile 的回复:
外部调用吧,为什么一定要这样呢?
要是有很多窗口怎么办?
d98531 2013-01-02
  • 打赏
  • 举报
回复
引用 1 楼 ksrsoft 的回复:
不要设成mdi子窗体试试
没有设成MDI子窗体呀
银点 2013-01-02
  • 打赏
  • 举报
回复
1、干脆取消子窗口的最小化 2、拦截子窗口的WM_SYSCOMMAND消息。然后SendMessage给主窗口.wParam = SC_MINIMIZE
「已注销」 2013-01-02
  • 打赏
  • 举报
回复
Form1(主窗口)需要 ShowWindow(Application->Handle,SW_HIDE); Form2(子窗口)需要 ParentWindow=GetDesktopWindow(); 但是这样会使得Form2上的组件失效,需要实现保存Form2->ParentWindow,以备还原。
CppFile 2013-01-01
  • 打赏
  • 举报
回复
外部调用吧,为什么一定要这样呢?
缘中人 2013-01-01
  • 打赏
  • 举报
回复
不要设成mdi子窗体试试

604

社区成员

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

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