![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Деран |
|
||||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
Здравствуйте!
Как правильно передавать данные из диалога в главное окно. Пробовал через глобальную переменную, не получается. //Процедура диалога
//глобальная переменная
полученные данные с N_Count не поменялись, хотя изменялись в диалоге. В чем моя ошибка? |
||||
|
|||||
BorisVorontsov |
|
||||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 4 Всего: 10 |
Во-первых, приучись занулять строки перед вызовом функций типа GetWindowText. Избавит от многих ошибок.
То есть ты стал бряком после
И посмотрел значение N_Count? И еще -- где ты проверяешь значение переменной в процедуре родительского окна? -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
||||
|
|||||
Деран |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
N_Count передаю классу через метод, если вместо N_Count, поставлю константу, то значение меняется (т.е. дело не в методе класса)
Не очень понятно, что вы имели ввиду? |
||||||
|
|||||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Деран, это значит поставьте брекпоинт на строке ниже где используете atoi(), и посмотрите значение вашей N_Count -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
Деран |
|
||||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
GDB показал N_Count = 11, да значение передалось в N_Count.
Странно, а значение остается прежним, которое инициализировал в
|
||||
|
|||||
Деран |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
Попробую задать вопрос по другому.
Каким способом передавать данные из диалога в главное окно? |
|||
|
||||
Деран |
|
||||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
Все, понял в чем ошибка!
Делал так:
А функция CreateDialogBoxEdit() не работает как MessageBox() и получается она создала диалог и продолжила работу дальше, т.е. выполнила следующую строчку и в N_Count не попадет нового значения! Это сообщение отредактировал(а) Деран - 27.8.2008, 19:24 |
||||
|
|||||
Деран |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
Но все равно не понятно как передавать данные. Не будет же пользователь нажимать два раза кнопку, например, пользователь вызвал диалог, ввел то что нужно и нажал ок, диалог закрылся и еще ему нужно нажать кнопку на главном окне чтобы считать данные с N_Count.
Как нужно проследить, что диалог закрылся, при этом на диалоге была нажата кнопка ок, или какие-то перехвату нужно делать? Может есть другое решение? |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
Когда пользователь нажмёт OK, тогда и изменяй переменную. И вообще, у тебя здесь диалогов нет, у тебя здесь просто создаются окна через CreateWindowEx. Диалоги создаются с помощью CreateDialogParam, DialogBoxParam, и бывают модальные и немодальные. Пример модального диалога - MessageBox - функция возвращает значение, когда окно закрывается. |
|||
|
||||
Деран |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
586, А разве CreateDialogParam и DialogBoxParam не используют фун. CreateWindowEx через которую и создается окно/диалог?
|
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
Диалоговое окно можно реализовать через обычные WinAPI функции, но это уже будет не диалоговое окно, а велосипед. Обычно, в WinAPI под диалоговыми окнами подразумеваются те окна, что созданы с помощью CreateDialogParam / DialogBoxParam. |
|||
|
||||
Деран |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
Спасибо всем за помощь.
Решил задачу, так: данные не передаются из диалога, а изменяются в самом диалоге (по предложенным советам выше) и изменил код создания диалога. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |