为什么第二个窗口最小化时不到任务栏里呢?

yuanyingtanxi 2000-03-16 08:18:00
加精
一个程序有两个窗口,第一个的visible属性设为true,第二个为false,在form里加一按钮,程序为form1->visible=false;form2->visible=true;显示第二个窗口。可第二个窗口最小化时却不到任务栏里,我想把第二个窗口最小化到工具栏里,应该如何完成?
用Application.OnMinimize处理只能处理一个窗口到工具栏。
---------------------------------------------------
各位大侠,本人分数太少,没法多给,请本着人道主义精神,拉兄弟一把
原应叹息
...全文
381 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanyingtanxi 2000-03-20
  • 打赏
  • 举报
回复
RE:Lin谢谢你,我问题太多,会得太少所以才叹息
我想还是用外部调用程序比较简单,我能接受。唉我太笨
呵呵,分太少,大家不够分,致各位以最衷心谢谢!!!
jzy 2000-03-18
  • 打赏
  • 举报
回复
看了各位大虾的高见,小弟获益匪浅。

不过小弟认为:使用Form2->ParentWindow=GetDesktopWindow();后,将导致Form2上除了标题栏以外其他部分都无效,所以有必要将原来的ParentWindow恢复。

可以分别编写Form2的OnDeActivate事件和OnPaint事件,如下:

//先定义两个全局变量
//hdcpw用以保存父窗体句柄(其实也可以不要,直接用Application->Handel就可以了)
//iden作个标志判断位

HWND hdcpw;
int iden=0;

void __fastcall TForm2::FormDeactivate(TObject *Sender)
{
if(iden==0)hdcpw=Form2->ParentWindow;
iden=1;
Form2->ParentWindow=GetDesktopWindow();
}

void __fastcall TForm2::FormPaint(TObject *Sender)
{
if(iden==1)
{Form2->ParentWindow=hdcpw;
iden=0;
}
}
//而在Form1的OnActivate事件中的GetDesktopWindow()就可以去掉了
kxy 2000-03-17
  • 打赏
  • 举报
回复
更正是Form2->ParentWindow = GetDesktopWindow();
kxy 2000-03-17
  • 打赏
  • 举报
回复
设置第二个窗口的Parent
Form2->Parent = GetDeskTopWindow();
trybird 2000-03-17
  • 打赏
  • 举报
回复
在第一个窗体的FormActivate事件中加一句就行了,如下------

void __fastcall TForm1::FormActivate(TObject *Sender)
{
ShowWindow(Application->Handle,SW_HIDE);
}
yuanyingtanxi 2000-03-17
  • 打赏
  • 举报
回复
RE:Lin:我最终的目地是要第二个窗口显示在工具栏里,替换Application->Title这个办法行么?
-----------------------------------------

RE:kxy:用你的办法确实管用,可惜,第一个窗口也在任务栏里,如何只在任务栏里显示第二个窗口呢?
-----------------------------------------
原应叹息
Lin 2000-03-17
  • 打赏
  • 举报
回复
To yuanyingtanxi:

答案就是:kxy + trybird:
void __fastcall TForm1::FormActivate(TObject *Sender)
{
ShowWindow(Application->Handle,SW_HIDE);
Form2->ParentWindow = GetDesktopWindow();
}

  另外,我很奇怪:你在很多地方都'原应叹息',有这么多人帮你,叹息什么呀?
trybird 2000-03-16
  • 打赏
  • 举报
回复
替换Application->Title为要显示Form->Caption
看似寻常,但能想出这种障眼术,也的确很高!
真没想到!
saxash 2000-03-16
  • 打赏
  • 举报
回复
哇!真是匪夷所思。这种把戏都想的出来,(拱手)佩服啊佩服。
Lin 2000-03-16
  • 打赏
  • 举报
回复
To yuanyingtanxi:
  这只能怪Inprise Corp.了,他们在封装TForm(其实是TCustomForm)和TApplication时隐藏了很多细节,实际上在任务栏显示的永远只是Application即主窗口,创建的Form永远都显示不到任务栏中...
  或许只有一个办法,回到过去在Windows环境编程的日子:自己创建对话框资源,自己负责显示?或者自己安慰自己:替换Application->Title为要显示Form->Caption,就好象Form显示在任务栏上一样(我就是这么做的@_@)。
david_sh 2000-03-16
  • 打赏
  • 举报
回复
如果想要这样,可以考虑外部调用的方式。
即将form2做成一个单独的程序,在form1中对他调用,则可以最小华到工具栏里了

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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