Добавляем 'дочерние'
диалоги в основной диалог
Автор: Martin Randall.
Компилятор: VC6, VC5
Как-то раз возникла необходимость во время
выполнения программы изменять содержимое
диалогового окна. Так же было необходимо, чтобы
все изменяемые элементы были бы как будто частью
этого окна.
Решение получилось в виде кода, который читает
файл ресурса с шаблоном "дочернего" диалога
и добавляет эелементы управления из шаблона в
родительский диалог.
Итак, как это работает. Наследуйте родительский
диалог от класса CMultiDialog и вызовите функцию AddDialog
для добавления дочернего диалога. Первый
параметр этой функции - это ID шаблона дочернего
диалога, а второй - это ID маркера контрола (обычно
static control), который размечает положение дочернего
контрола. Данный маркер будет скрыт после того,
как дочерний контрол будет добавлен.
Добавьте следующие строки в функцию OnInitDialog
родительского диалога.
// Добавление диалога
AddDialog( IDD_DIALOG1, IDC_MARKER );
Работаем с элементами управления в диалоге как
с обычными диалоговыми контролами:
m_pListBox = (CListBox*) GetDlgItem( IDC_LIST1 );
if ( m_pListBox ) {
m_pListBox->AddString( "First" );
m_pListBox->AddString( "Second" );
m_pListBox->AddString( "Third" );
}
Downloads
Скачать демонстрационный
проект - 33 Kb
Скачать исходник - 3 Kb
|