|
테스크바에 버튼 안 생기게 하는 방법을 MSDN에서 조사해보았더니,
"어떤 보이지 않는 윈도우를 WS_EX_TOOLWINDOW 스타일을 주고, 어떤 다이얼로그박스를 만들면서
WS_EX_APPWINDOW속성을 해재하고, 이 때 보이지 않는 윈도우에 own되게 하라"
가 방법인거 같아서,
아래와 같이 소스를 짜봤습니다.
***** 아래는 Unit1의 소스 ******
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
long ex_style = GetWindowLong(Handle,GWL_EXSTYLE);
ex_style |= WS_EX_TOOLWINDOW;
SetWindowLong(Handle,GWL_EXSTYLE,ex_style);
TForm2* he = new TForm2(this);
he->Show();
}
******* 그리고 아래는 Unit2의 소스입니다.TForm2에는 버튼이 딱 두개가 있지요.
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::btnShowClick(TObject *Sender)
{
Form1->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::btnHideClick(TObject *Sender)
{
Form1->Hide();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
long ex_style = GetWindowLong(Handle,GWL_EXSTYLE);
ex_style &= !(WS_EX_APPWINDOW);
SetWindowLong(Handle,GWL_EXSTYLE,ex_style);
}
//-----------
그래서, 이렇게 짜놓고, 실행시키면, TForm1과 TForm2 이렇게 폼이 두 개가 생성되거든요,
거기서 TForm2에서 버튼 btnHide를 눌러서 TForm1에 해당하는 폼을 안보이게 했씁니다.
그러면, TForm2만이 보이는 상태가 되는데, 이렇게하면, taskbar에서 버튼이 사라질 것이라고 기대했는데, taskbar에서 버튼이 그대로 남아있었어요.
어떤 소스를 더 추가해야 taskbar에서 사라지게 할 수 있는거죠?
|