Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
wtf!?
749 / 280 / 25
Регистрация: 21.05.2010
Сообщений: 732
1

Не MainForm на таск баре

04.12.2011, 00:04. Просмотров 1330. Ответов 9
Метки нет (Все метки)

У меня есть несколько форм в проекте - главная, что то типа сплэша, форма коннекта к дб (если файл настроек не найде) (и другие но они не важны).
Так вот в чом суть, главная форма есть мейн формом проги и когда она открыта, иконка проги отображается на таск баре, но мне нужно еще чтобы иконка была на таск баре когда открыты и форма-сплэш и коннекта к дб.
Сначала подумал, по переключать Application->MainForm, но потом вспомнил, что его менять во время исполнения нельзя и вариант отпал. Больше я ничего не придумал.
Собственно, кто знает как сделать, чтобы на таск баре отображалась иконка формы, которая не является главной?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2011, 00:04
Ответы с готовыми решениями:

Окошко на таск баре
Доброго всем времени суток! Подскажите как убирать окошко с таск бара при свёртывание программы в ...

Application.CreateForm(TMainForm, MainForm); ошибка не нравится MainForm
Вот программа с ошибкой program FirstProg; uses Vcl.Forms, MainUnit in 'MainUnit.pas'...

Таск киллер
Всем привет. Прошу Вашей помощи... Мне необходимо написать программу которая запускалась бы в фоне...

Таск List<String>
Добрый день! надо решить такую задачку Я написала что-то вроде этого, но у меня не выводит мой...

9
Прогер
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
04.12.2011, 07:39 2
Flyer,
http://msdn.microsoft.com/en-u... 42846.aspx
2
LK
Заблокирован
04.12.2011, 17:46 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TВашаForm::CreateParams(TCreateParams& Params)
{
// форма как отдельное окно
  TForm::CreateParams(Params);
  Params.ExStyle = Params.ExStyle|WS_EX_APPWINDOW // своя кнопка на TaskBar'e
                   |WS_EX_COMPOSITED // Paints all descendants of a window
                                     // in bottom-to-top painting order
                                     // using double-buffering.
                   |WS_EX_LAYERED; //Using a layered window can significantly
                                   // improve performance and visual effects
                                   // for a window.
  Params.WndParent = 0;
//  Params.WndParent = ParentWindow;
}
на параметры WS_EX_COMPOSITED и WS_EX_LAYERED можно забить...
и не забыть прототип в заголовочном файле.
2
wtf!?
749 / 280 / 25
Регистрация: 21.05.2010
Сообщений: 732
04.12.2011, 18:24  [ТС] 4
Спасибо, LK, все получилось
0
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 5
29.05.2012, 00:44 5
Цитата Сообщение от LK Посмотреть сообщение
на параметры WS_EX_COMPOSITED и WS_EX_LAYERED можно забить...
Можно вообще на Params.ExStyle забить, если вы используете строку: Params.WndParent = 0; В этом случае WS_EX_APPWINDOW автоматически встанет.

Добавлено через 32 минуты
И вообще, можно не мудрить с CreateParams. Достаточно в событии формы FormCreate прописать одну строку:
C++
1
SetWindowLongPtr(Handle, GWL_HWNDPARENT, 0);  // форма как отдельное окно
и ваша форма откроется со своим значком в таскбаре, сворачиваться будет отдельно и независимо от главной формы. Но если главную форму закроете, то и эта форма тоже закроется ))
0
LK
Заблокирован
29.05.2012, 01:50 6
Этот вопрос себя исчерпал 04.12.2011 в 16:24.
Цитата Сообщение от arandr Посмотреть сообщение
и ваша форма откроется со своим значком в таскбаре
вопрос как раз был
Не MainForm на таск баре
И речь таки шла о MainForm, сиречь, главной форме приложения.

Хотя для ситуации - "тихо сам с собою я веду беседу" - это не имеет ни малейшего значения.
0
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 5
29.05.2012, 02:05 7
Цитата Сообщение от LK Посмотреть сообщение
И речь таки шла о MainForm, сиречь, главной форме приложения.
Хм. Но код-то был другой.

Ну ОК, ОК.
Форма с таскбара убирается одной строкой:
C++
1
ShowWindow(Application->Handle,SW_HIDE);
А чего вам не спится в два часа ночи?
0
LK
Заблокирован
29.05.2012, 02:09 8
А разве оно и саму форму не прячет ?

дык, и вам не спится, да и у меня всего лишь час ночи .
0
0 / 0 / 0
Регистрация: 28.05.2012
Сообщений: 5
29.05.2012, 02:24 9
Цитата Сообщение от LK Посмотреть сообщение
А разве оно и саму форму не прячет
Не, Application не прячет. Саму форму ShowWindow(Handle,SW_HIDE); прячет

Добавлено через 1 минуту
А восстанавливается на таскбаре назад строкой:
C++
1
ShowWindow(Application->Handle,SW_SHOW);
0
LK
Заблокирован
29.05.2012, 03:02 10
Я упоминал Application ?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.05.2012, 03:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

MainForm
Где он находится? и чем отличается от Form?

WindowsForm и работа по Schedule Таск
Как совместить 2 части в одной программе 1.WindowsForm(пользователь производит начальные установки)...

Анрил таск. Преобразование данных
--таблица данных, в которой хранится информация о пути проделанном из точки А в точку Б, -- во...

На баре тиц по 0
Думал глюк, но вот уже 2 день на баре 0 тиц, соответственно определение тИЦ во многом софте не пашет


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.