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);
сообщение, посылаемое диалоговому окну после его создания и отображения
После создания сразу WM_CREATE, а отоброжения - так тут смотря что хочешь.
Короче нужно найти момент, когда диалог уже создан и имеет стиль WS_VISIBLE.
Решение, которое я использую сейчас - сразу после создания диалога обновляю tab-контрол... но хотелось-бы чтобы все это происходило внутри класса диалога.
И не надо изобретать велосипед. )
если невидимо - может, оно созданно невидимым (без WS_VISIBLE) и стоит сделать ShowWindow(...)?
А вот для инициализации других компонентов диалога, когда он полностью создан и функционален подходит WM_INITDIALOG
WM_CREATE
WM_SHOW
WM_SIZE
WM_PAINT
(есть еще WM_ACTIVATE, по-моему после WM_SHOW, хотя нужно проверить)
при удалении
WM_CLOSE
WM_DESTROY
Короче нужно найти момент, когда диалог уже создан и имеет стиль WS_VISIBLE.
Решение, которое я использую сейчас - сразу после создания диалога обновляю tab-контрол... но хотелось-бы чтобы все это происходило внутри класса диалога.[/QUOTE]
Программист же вручную отображает таб-контрол методом Show (насколько я помню). Так вот, добавь диалог в таб после создания последнего, но перед отображением, и не придется обновлять таб.
Вообще лучше создать все диалоги, потом создать таб, добавить диалоги в таб, отобразить таб.
а если через сам таб? подробнее про табы здесь
в окне (или диалоге где таб) создаёшь через class wizard или вручную элемент управления (Control) для таба обзываешь его m_tab например, и создаёшь указатель на свой диалог CMyDialog* page_1, тогда в OnInitDialog()
Код:
при фокусе проблем нету. WM_ACTIVATE работает! Вот только после отображения диалога на экране оно не вызывается ((