Chinaunix首页 | 论坛 | 博客
  • 博客访问: 522190
  • 博文数量: 252
  • 博客积分: 6057
  • 博客等级: 准将
  • 技术积分: 1635
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-21 10:17
文章分类

全部博文(252)

文章存档

2013年(1)

2012年(1)

2011年(32)

2010年(212)

2009年(6)

分类: C/C++

2010-07-19 10:18:00

发表于:2010-07-15 23:21:04 在工程中有form1(主窗体)、form2、form3,所有窗体都设置(fsStayOnTop)
当form1显示的时候,任务栏有图标;form1 里的button1点击,form1隐藏,form2显示。这个时候,任务栏应该隐藏图标。也就是说除了主窗体显示的时候,任务栏可以有图标外,其他窗口 显示的时候,都需要在任务栏上隐藏图标。

我在工程的入口:
C/C++ code
Application->Initialize();
SetWindowLong(Application
->Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); // 不显示在任务栏
Application->CreateForm(__classid(TForm1), &Form1);
Application
->CreateForm(__classid(TForm2), &Form2);
Application
->Run();


在form1(主窗体)中:
C/C++ code
void __fastcall TForm1::CreateParams(Controls::TCreateParams &Params)
{

TForm::CreateParams(Params);
Params.ExStyle
|= WS_EX_APPWINDOW;
Params.WndParent
= GetDesktopWindow();
}



能实现上面的功能,但存在以下的问题:
1、form1(主窗体)最小化按钮不起作用;
2、 form1(主窗体)closequery中的弹出窗口不是在最顶层;该如何解决,谢谢。


回复于:2010-07-16 01:14:03
好像是有点问题, 
换个思路吧:
BCB显示在任务栏上的是App窗口, 通过 
SetWindowLong(Application->Handle,GWL_EXSTYLE,WS_EX_XXXX);
可 以控制它的显示与隐藏,

那么在 Form1 中添加:
C/C++ code

void __fastcall TForm1::MyShow()
{
SetWindowLong(Application
->Handle,GWL_EXSTYLE,WS_EX_OVERLAPPEDWINDOW);
Show();
}


在Form2中添加:
C/C++ code

void __fastcall TForm2::MyShow()
{
SetWindowLong(Application
->Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
Show();
}


从 Form1 切到 Form2:
C/C++ code

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1
->Hide();
Form2
->MyShow();
}




阅读(809) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~