2013-09-07 3 views
0

При использовании MFC, если у меня есть основное диалоговое окно, то из главного вызова вызывается другое диалоговое окно, какое сообщение отправляется в основное диалоговое окно, чтобы он знал, что он имеет фокус, это WM_SETFOCUS()? Если да, то какие параметры нужны? Проблема в том, что в диалоговом окне дочернего элемента выбрано значение, и я хочу, чтобы он был скопирован в элемент управления редактирования в главном диалоговом окне, когда он (дочерний диалог) закрывается. Прямо сейчас у меня это есть, поэтому второе диалоговое окно копирует свое значение в глобальную переменную, но как только второе диалоговое окно закрывается, я хотел, чтобы основное диалоговое окно захватило глобальную переменную и отображалось в элементе управления редактирования.Передача значений между диалоговыми окнами в mfc

+0

Является ли ваш дополнительный диалог модальным диалогом или немодальным диалогом? – IInspectable

+0

Его модальный диалог – Stablecannon

ответ

2

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

CChildDialogBox dlg; 
if (dlg.DoModal() == IDOK) // child dialog saves the value in a CString member variable m_str 
{ GetDlgItem(IDC_EDIT1)->SetWindowText(dlg.m_str); 
} 

Этот MSDN article описывает, как вы можете настроить переменные-члены, связанные с элементами управления в диалоговом окне.

+0

Я пробовал это, но даже несмотря на то, что переменная обновляется с новыми значениями, я до сих пор не могу ее отобразить в элементе управления редактированием. В этой ситуации в главном диалоговом окне есть возможность загружать предварительно загруженные номера, а не вводить их вручную. Поэтому, когда пользователь выбирает один из чисел из всплывающего диалогового окна, я хочу, чтобы он отображался в главном диалоговом окне, когда список закрыт. Появляется ли в главном диалоговом окне сообщение, что он имеет фокус? – Stablecannon

+0

Решена ли проблема (согласно вашему новому ответу ниже)? –

+0

Да, оцените помощь и спасибо за эту ссылку. – Stablecannon

0

Я понял свою проблему, действительно ошибку новичка, хотя после вызова DoModal функция сразу же выйдет. Я не знал, что могу выполнить дополнительный код (назначая переменную управления редактированием новое значение, а затем SetWindowText) после вызова, прежде чем функция завершится.

Смежные вопросы