powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопросик про Диалог
9 сообщений из 9, страница 1 из 1
Вопросик про Диалог
    #33376368
'FaTsO'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть форма на Вижуале...
У меня есть Диалоговое окошко в нем есть два Edit'а IDC_EDIT1 и IDC_EDIT2
Как мне при появлении диалогового окна записывать туда текст
Как при нажатии кнопки ОК в диалоговом окне вытаскивать значения из Эдитов и выполнять какую нибудь функцию в главной форме (скажем написать их в форме)

Заранее спасибо)))
...
Рейтинг: 0 / 0
Вопросик про Диалог
    #33376469
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WM_INITDIALOG
WM_SHOWWINDOW
WM_COMMAND
GetDlgItem
GetWindowText
SetWindowText
...
Рейтинг: 0 / 0
Вопросик про Диалог
    #33376564
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
'FaTsO'Есть форма на Вижуале...
У меня есть Диалоговое окошко в нем есть два Edit'а IDC_EDIT1 и IDC_EDIT2
Как мне при появлении диалогового окна записывать туда текст
Как при нажатии кнопки ОК в диалоговом окне вытаскивать значения из Эдитов и выполнять какую нибудь функцию в главной форме (скажем написать их в форме)

Заранее спасибо)))
Все достаточно просто. Надо в твоем классе, производном от CDialog, прописать новые переменные-члены, имеющие тип IDC_EDIT1 и IDC_EDIT2 соответственно. Чтобы вытащить значение из Эдитов необходимо сначала обновить значения в перемeнных-членах при помощи UpdateData(), а затем как обычно: (LPCTSTR)<Member Variable>
Установить новoе значение в окне ввода можно при помощи: SetDlgItemText(<ID ресурса>,<Текст>).
Например:
SetDlgItemText(IDC_EDIT2,(LPCTSTR)m_User);
...
Рейтинг: 0 / 0
Вопросик про Диалог
    #33378070
'FaTsO'
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините пожалуйста...я написал вот так вот
BOOL Dialog::OnInitDialog()
{
CDialog::OnInitDialog();
UpdateData(TRUE);
m_eOt.SetWindowText("-10");
m_eDo.SetWindowText("10");
UpdateData(TRUE);

return TRUE;
}
У меня при появлении главной формы вызывается сразу Диалоговое окошко
но то что я написал не вписывает значения...они вписываются только при повторном вызове Диалогового окна(
...
Рейтинг: 0 / 0
Вопросик про Диалог
    #33378172
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитай про DDX_ и UpdateData
...
Рейтинг: 0 / 0
Вопросик про Диалог
    #33378714
alex83_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можна так:

Edit'у привязываеш переменную типа СString

Перед тем как вызвать диалог с ЭДИТОМ пишиш

Dlg1.Edit1="Hello world";
UpdateData(false);

Теперь вызываеш диалог с этим эдитом и ждёшь нажатия кнопки ОК. Если её нажал то вуаляяяя :)


if(Dlg1.DoModal()==IDOK)
{
AfxMessageBox(Dlg1.Edit1);
}
...
Рейтинг: 0 / 0
Вопросик про Диалог
    #33480266
neskif
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню у функции UpdateData есть два варианта аргумента, а именно true и false. При одном из них информация идет из окна в переменную окна типа m_edit1 и m_edit2 соответственно. При другом аргументе информация из переменной окна идет в само окно, т.е. визуализируется. Нужно только при создании на диалоговой панели окон редактирования с помощью мастера или ручками поставить в соответствие окнам редактирования переменные типа m_edit
...
Рейтинг: 0 / 0
Вопросик про Диалог
    #33480373
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НЕ ПАРЬСЯ с переменными - используй Set(Get)WindowText()
...
Рейтинг: 0 / 0
Вопросик про Диалог
    #33481724
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Создать класс на базе диалога средствами мастера.
2. МОжно добавить мастером же две переменых CString m_txt1, CString m_txt2 к полям.
3. получится что-то типа
Код: plaintext
1.
2.
3.
4.
5.
6.
void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1,m_txt1);
DDX_Text(pDX, IDC_EDIT2,m_txt1);
}
UpdateData(FALSE) устанавливает значения контролов в переменные, описанные в DoDataExchange
UpdateData(TRUE) - извлекает данные из контролов и помещает их в переменные.

...
CMyDlg dlg;
dlg.m_txt1="Hello!";
dlg.m_txt2="World!";

dlg.DoMoodal();

При отрисовке если в OnInitDialog есть UpdateData(FALSE) то в полях будет написано Hello! World!

Ну и чтобы получить данные достаточно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void CMyDlg::OnOK()
{
     UpdateData(); // TRUE можно не указывать
     CString res = m_txt1+" "+m_txt2;
     AfxMessageBox(res);
}

...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопросик про Диалог
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]