Как добраться до контрола в диалоге?
От: peter@work Россия  
Дата: 10.11.06 10:07
Оценка:
Есть диалог, на нем TextBox. Из любой ф-ции в рамках класса диалога дотянуться лекго.

void CTestDlg::OnBnClickedButton1()
{
    GetDlgItem(IDC_EDIT1)->SetWindowText("asd");
}


А вот, если мне нужно из сторонней ф-ции дотянутся до того же EditBox'а? Как это сделать?


void ChangeTextBox () {
// Вот как отсюда достать тот же контрол?
}
peter@work
Re: Как добраться до контрола в диалоге?
От: Какая разница Украина  
Дата: 10.11.06 10:15
Оценка:
Здравствуйте, peter@work, Вы писали:

PW>Есть диалог, на нем TextBox. Из любой ф-ции в рамках класса диалога дотянуться лекго.


PW>
PW>void CTestDlg::OnBnClickedButton1()
PW>{
PW>    GetDlgItem(IDC_EDIT1)->SetWindowText("asd");
PW>}
PW>


PW>А вот, если мне нужно из сторонней ф-ции дотянутся до того же EditBox'а? Как это сделать?



PW>
PW>void ChangeTextBox () {
PW>// Вот как отсюда достать тот же контрол?
PW>}
PW>


По любому этой сторонней функции нужно знать указатель на твой диалог

Как ты его предоставиш ей я не знаю

На худой конец сохрани в глобальной переменной (хотя зп такое будут здесь ругать)


PW>
PW>void ChangeTextBox () {
PW>// Вот как отсюда достать тот же контрол?
     CMyDlg *pDlg = ?????????;
     pDlg->GetDlgItem(IDC_EDIT1)->SetWindowText("asd");
PW>}
PW>
!0xDEAD
Re: Как добраться до контрола в диалоге?
От: Pavel Dvorkin Россия  
Дата: 10.11.06 11:34
Оценка:
Здравствуйте, peter@work, Вы писали:

PW>А вот, если мне нужно из сторонней ф-ции дотянутся до того же EditBox'а? Как это сделать?


А почему, собственно говоря, сторонней функции понадобилось обращаться к контролам диалога ? Чего доброго, эта функция вздумает к ним обратиться, когда их и вовсе нет. ИМХО надо просто эту функцию сделать членом класса CMyDialog, и пусть себе обращается.
With best regards
Pavel Dvorkin
Re: Как добраться до контрола в диалоге?
От: alex012 Украина  
Дата: 10.11.06 15:34
Оценка:
Удалено избыточное цитирование. — SchweinDeBurg

Здравствуйте, peter@work, Вы писали:

PW>Есть диалог, на нем TextBox. Из любой ф-ции в рамках класса диалога дотянуться лекго.

PW>А вот, если мне нужно из сторонней ф-ции дотянутся до того же EditBox'а? Как это сделать?

А вот так уже не модно?

void test(CtestDlg* dlg)
{
    dlg->GetDlgItem(IDC_EDIT1)->SetWindowText("test");
}

void CtestDlg::OnBnClickedButton1()
{
    test(this);
}
Всем спасибо. С уважением, Александр.
Re: Как добраться до контрола в диалоге?
От: Carc Россия http://www.amlpages.com/home.php
Дата: 11.11.06 02:13
Оценка:
Здравствуйте, peter@work, Вы писали:

PW>Есть диалог, на нем TextBox. Из любой ф-ции в рамках класса диалога дотянуться лекго.


Ох добром это не кончается все-таки... указатели, на диалоги, да в неизвестно кем писанной функции...
Лучше передать все-таки HWND диалога.

void Test(HWND hwndDlg)
{
const HWND hwndEdit=::GetDlgItem(hwndDlg,ID_EDIT);
}


По крайней мере все не рухнет, если диалога уже не будет. Пользователь конечно удивится, но если мы "полезем" к Edit`у через указатель на диалог, пользователю уже некогда будет удивляться, он будет упорно кликать "Не отправлять отчет в Microsoft"....
Aml Pages Home
Re: Как добраться до контрола в диалоге?
От: Аноним  
Дата: 14.11.06 14:03
Оценка:
Здравствуйте, peter@work, Вы писали:

PW>А вот, если мне нужно из сторонней ф-ции дотянутся до того же EditBox'а? Как это сделать?



PW>
PW>void ChangeTextBox () {
PW>// Вот как отсюда достать тот же контрол?
PW>}
PW>


Моть есть смысл заделать в классе CTestDlg метод ChangeEdit, работающий с этим Editbox-ом, а в функции
ChangeTextBox вызывать метод ChangeEdit, моть не красиво, но я думаю должно работать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.