Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Свёртывание в панель задач динам. формы


Автор: Sergio 30.4.2007, 21:24
Здраствуйте. Вот у меня есть динам. форма , которая появляется в панели задач:
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        TForm* Forma = new TForm(Application, 1);
        Forma->Width = 320;
        Forma->Height = 365;
        Forma->Left = Form1->Left + Form1->Width/2 - (Forma->Width/2);
        Forma->Top = Form1->Top + Form1->Height/2 - (Forma->Height/2);
        Forma->BorderStyle = bsSingle;
        Forma->BorderIcons = TBorderIcons() <<biSystemMenu <<biMinimize;
        Forma->Caption = "Dialog with: ";
        HANDLE Handle = Forma;
        SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) |WS_EX_APPWINDOW);
        Forma->Show();
}

Но у меня появилась проблема: когда я свёртываю основную форму(Form1) динамическая тоже свёртывается и исчезает с панели задач smile Как решить эту проблему?
Зарание спасибо.

Автор: Klin 30.4.2007, 21:55
Можно ее скрывать иначе:
Код

     ShowWindow(Form1->Handle,SW_HIDE);


Автор: Klin 30.4.2007, 22:25
А для пущей радости smile можно сделать так:
Код

 void __fastcall TForm1::MyHide(TObject *Sender)
 { 
 ShowWindow(Form1->Handle,SW_SHOW);
 ShowWindow(Application->Handle,SW_SHOW);
 }
 . . . . . . .
 ShowWindow(Form1->Handle,SW_HIDE);
 ShowWindow(Application->Handle,SW_HIDE);
 Forma->OnHide = MyHide;
 . . . . . . .


Будет так. Главная форма (вместе с заголовком в панели задач) пропадает и появляется динамическая форма. И при ее закрытии (не при минизации) она будет закрываться, а главная вновь появляться.

Автор: ama_kid 2.5.2007, 17:44
Цитата(Sergio @  30.4.2007,  21:24 Найти цитируемый пост)
Но у меня появилась проблема: когда я свёртываю основную форму(Form1) динамическая тоже свёртывается и исчезает с панели задач  Как решить эту проблему?
Она тоже свертывается потому, что родительская форма свернулась... Можешь сделать так:
Код
 TForm* Forma = new TForm((void *)GetDesktopWindow());

Автор: Pendalf 3.5.2007, 05:50
Цитата(ama_kid @ 2.5.2007,  17:44)
Она тоже свертывается потому, что родительская форма свернулась... Можешь сделать так:
Код
 TForm* Forma = new TForm((void *)GetDesktopWindow());


Так не работает. Пишет:
Код

E2285: Could not find a match for 'TForm::TForm(void *)'

Автор: HappyLife 3.5.2007, 09:32
А так?
Код

TForm* Forma = new TForm((HWND)GetDesktopWindow());

Автор: Klin 3.5.2007, 12:36
Цитата(Pendalf @  3.5.2007,  06:50 Найти цитируемый пост)
Так не работает. Пишет:

Все работает:
и так:
Код

 TForm* Forma = new TForm((void*)GetDesktopWindow());

,или так:
Код

 TForm* Forma = new TForm((HWND)GetDesktopWindow());

, но можно и так:
Код

 TForm* Forma = new TForm(GetDesktopWindow());


Но почему-то тормозит, будем разбираться smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)