Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Передача строковых данных из родительского окна


Автор: Hawkmoth 1.6.2010, 17:25
Всем здравствуйте, опять рассчитываю на помощь. Из родительского диалогового окна в дочернее передаются некоторые строковые данные. В хедэре дочернего окна определена переменная CString string, в родительском окне в обработчике кнопки вызова дочернего окна прописано Dochernee_Okno.string="Привет". Мне нужно, чтобы при появлении дочернего окна эта строчка уже красовалась в Static Text.
Мои попытки наладить это были таковы: в {{AFX_DATA_INIT}} дочернего окна прописать

m_Static_Text=_T(string);

но в этом случае я получаю вместо "Привет" значение 2.6681е-308, либо вообще ничего.
Как я понимаю, начальное значение переменной m_Static_Text присваивается еще на этапе компиляции, поэтому в процессе работы программы изменение текстовой переменной string на это начальное значение повлиять не может. Если, например, я вставлю в дочернее окно кнопку, а в обработчике нажатия на нее пропишу MessageBox(string), вот там я уже получу желаемое "Привет!". Но мне необходимо, чтобы пользователь видел это окно с уже отображаемым "Приветом". Наверное, глупость, но допереть не могу...

Автор: Albor 2.6.2010, 06:25
Вообще-то, текст в дочернем окне можно установить так 
Код

Dochernee_Okno.SetWindowText(_T("Some text"));

Но, если пренепременно нужно положить значение в переменную дочернего окна, то для него можно создать конструктор с параметром, куда и передавать необходимый текст. Либо, присваивать значение, пока окно невидимо, то есть до его отображения.

Автор: Hawkmoth 4.6.2010, 15:42
Спасибо! Но я, в общем, уже перестал выпендриваться и присвоил значение переменной в самом обработчике:
Код

void CParent_Window::OnOK() {
CString String;
String.Format("Привет мир!");
Child_Window.m_Static_Text=_T(String);


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)