Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

сообщение, посылаемое диалоговому окну после его создания и отображения

333
02 августа 2006 года
GHopper
200 / / 28.12.2004
какое?
240
02 августа 2006 года
aks
2.5K / / 14.07.2006
После создания сразу WM_CREATE, а отоброжения - так тут смотря что хочешь.
333
02 августа 2006 года
GHopper
200 / / 28.12.2004
Ситуация такая - создается диалоговое окно из моего класса. После создания мне нужно поместить его на tab-контрол, для чего нужно вызвать функцию-член последнего. Вызываю в wm_create - окно еще не видимо, поэтому и на табе не отображается. Вызываю в wm_initdialog, wm_size - таже фигня.
Короче нужно найти момент, когда диалог уже создан и имеет стиль WS_VISIBLE.
Решение, которое я использую сейчас - сразу после создания диалога обновляю tab-контрол... но хотелось-бы чтобы все это происходило внутри класса диалога.
240
02 августа 2006 года
aks
2.5K / / 14.07.2006
Вобще по хорошему после того как создался диалог (с WS_VISIBLE) его сразу можно помещать в таб-контрол. Окно то уже созданно и полностью функционально. Только сделать его еще дочерним для таба.
И не надо изобретать велосипед. )
если невидимо - может, оно созданно невидимым (без WS_VISIBLE) и стоит сделать ShowWindow(...)?
А вот для инициализации других компонентов диалога, когда он полностью создан и функционален подходит WM_INITDIALOG
284
03 августа 2006 года
michael_is_98
587 / / 25.02.2005
при создании
WM_CREATE
WM_SHOW
WM_SIZE
WM_PAINT
(есть еще WM_ACTIVATE, по-моему после WM_SHOW, хотя нужно проверить)

при удалении
WM_CLOSE
WM_DESTROY
350
09 августа 2006 года
cheburator
589 / / 01.06.2006
[QUOTE=GHopper]Ситуация такая - создается диалоговое окно из моего класса. После создания мне нужно поместить его на tab-контрол, для чего нужно вызвать функцию-член последнего. Вызываю в wm_create - окно еще не видимо, поэтому и на табе не отображается. Вызываю в wm_initdialog, wm_size - таже фигня.
Короче нужно найти момент, когда диалог уже создан и имеет стиль WS_VISIBLE.
Решение, которое я использую сейчас - сразу после создания диалога обновляю tab-контрол... но хотелось-бы чтобы все это происходило внутри класса диалога.[/QUOTE]
Программист же вручную отображает таб-контрол методом Show (насколько я помню). Так вот, добавь диалог в таб после создания последнего, но перед отображением, и не придется обновлять таб.
Вообще лучше создать все диалоги, потом создать таб, добавить диалоги в таб, отобразить таб.
16K
09 августа 2006 года
koric
42 / / 06.08.2006
WM_ACTIVATE вызывается каждый раз при фокусе на данном диалоге
а если через сам таб? подробнее про табы здесь

в окне (или диалоге где таб) создаёшь через class wizard или вручную элемент управления (Control) для таба обзываешь его m_tab например, и создаёшь указатель на свой диалог CMyDialog* page_1, тогда в OnInitDialog()
Код:
TC_ITEM tci;
tci.mask = TCIF_TEXT;
tci.iImage = -1;
tci.pszText = "Закладка";
m_tab.InsertItem(0,&tci);

tci.mask = TCIF_PARAM;
tci.lParam = (LPARAM)page_1;
m_tab.SetItem(0,&tci);
page_1->Create(CMyDialog::IDD, &m_tab);
page_1->SetWindowPos(NULL,0,25,0,0,SWP_NOSIZE|SWP_NOZORDER);
page_1->ShowWindow(SW_SHOW);
333
10 августа 2006 года
GHopper
200 / / 28.12.2004
при фокусе проблем нету. WM_ACTIVATE работает! Вот только после отображения диалога на экране оно не вызывается ((
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог