Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
Serjik

Как обьявить глобальную переменную в диалоговом окне?

10.06.2008, 16:08. Показов 2217. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Visual C++
Программа сделана на основе диалогового окна. При двойном щелчке мыши по элементу списка появляется диалоговое окно(модальное). Необходимо чтобы при появлении этого окна, в элементе EDIT принадлежащему этому окну было содержимое строки списка.
Проблема состоит в следующем: как задать переменную, которая была бы доступна как в первом диалоговом окне, так и вовтором.
Если я обьявляю ее в первом диал. окне, то она недоступна во втором.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.06.2008, 16:08
Ответы с готовыми решениями:

Как создать таблицу в диалоговом окне.
Всем привет. Помогите в диалоговом окне(vc++ 6.0) создать таблицу из 7 столбцов, а количество строк от 1 до 40. эта таблица должна...

Как создать глобальную переменную в MFC?
всем доброго времени суток! простите за глупый вопрос. скажите, плз, как создать глобальную переменную в MFC? приложение диалоговое. я...

Как сделать чтобы кнопка в диалоговом окне не подсвечивалась до того, как на нее наведешь мышкой? (MFC)
Как сделать чтобы кнопка в диалоговом окне не подсвечивалась mfc до того, как на нее наведешь мышкой?

8
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
11.06.2008, 11:24
Привет !

Я так понимаю это всё на основе MFC сделано, иначе !такие! вопросы не стал бы задавать.
Итак: залазишь в любой файл(желательно .h) вне класса и объявляешь глобальную переменную, и всё... теперь чтобы она была доступна в любом файле напиши вначале
Code
1
#include 'filename.h'
либо объявляй её в stdafx.h (он в каждом проекте на MFC есть)

Удачи ..., Andir !
0
Serjik
11.06.2008, 20:10
в stdafx.h объявил переменную:
char edik;
тогда после объявления появляется сдедующее:

aaaDlg.obj : error LNK2005: 'char edik' (?edik@@3DA) already defined in aaa.obj
red.obj : error LNK2005: 'char edik' (?edik@@3DA) already defined in aaa.obj
Debug/aaa.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
0 / 0 / 2
Регистрация: 18.05.2008
Сообщений: 45
12.06.2008, 05:40
А ты удалил эту переменную там, где раньше её пытался использовать в качестве глобальной. Банальный конфликт имен...
и VC прямо говорит об этом, хотя и не по-русски ((

С уважением, KillerBean
0
Serjik
12.06.2008, 19:51
да удалил
делал даже новую переменную включал ее в filename.h и происходило следующее :

указанная в предыдущем письме ошибка возникала только после подключения filename.h

#include 'filename.h'
0 / 0 / 2
Регистрация: 18.05.2008
Сообщений: 45
14.06.2008, 04:37
Можешь попробовать ещё Build->Rebiuld All

А вообще решение твоей проблемы таково:

m_list_ctrl- контролирующая переменная ListBox
selection- позиция выделенная в ListBox главного окна
Dial- класс второго диалога
m_string- CString-переменная, связанная с Edit в окне Dial
text- просто переменная класса CString
В заголовочном файле главного окна:
C++
1
#include 'Dial.h'
В файле Dial.h:
C++
1
#include 'класс_главного_диалога.h'
При двойном щелчке по ListBox - вызов функции обработчика:
C++
1
2
3
4
5
6
7
8
9
void CAaaDlg::OnDblclkList1() 
{
    int selection=0;
    selection=m_list_ctrl.GetCurSel();
    m_list_ctrl.GetText(selection,text);
    Dial dlg;
    dlg.m_string=text;
    dlg.DoModal();
}
Работает!!! Помнят руки!!! и голова!!!

С уважением, KillerBean

PS С тебя пиво )
PSS Шутка, я в Мурманске живу.
0
Serjik
16.06.2008, 12:13
да
удалил
все без изменений
0 / 0 / 2
Регистрация: 18.05.2008
Сообщений: 45
18.06.2008, 03:02
Удали папки Debug/Release из папки проекта, а вообще, лучше
создай новый проект.

С уважением, KillerBean
0
The Lex
19.06.2008, 23:44
Во-первых: просто совет: забудте о глобальных переменных.
Во-вторых: из написанного здесь я понял что программа ан MFC - это хорошо. Сделайте так:

1) В класс-оболочку модального диалога, что отображает Edit, создайте для этого элемента переменную для обмена данными. Для этого в редакторе ресурсов выполните двойной щелчок левой кнопкой мыши по элементу Edit при нажатом Ctrl - Ctrl + DoubleClick. Откроется окошко 'Add Member Variable' - введите имя переменной (что-то вроде m_strMyField), а остальное можете оставить как есть. Нажмите OK. Переменная добавлена.

2) Вызов модального диалога будет выглядеть примерно так:
C++
1
2
3
4
5
6
CMyDlg dlg;
dlg.m_strMyField = 'Что Вы там хотите ей присвоить';
if (dlg.DoModal() == IDOK)
{
  // Значит пользователь нажал OK и что-то надо делать
}
3) Забудте о глобальных переменных.

Удачи!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.06.2008, 23:44
Помогаю со студенческими работами здесь

Список в диалоговом окне
У меня есть диалоговое окно со списком(идентификатор например IDC_LIST). Список инициализируется а так же заносятся новые записи. Мне...

Картинка в диалоговом окне
Каким способом можно отобразить графический файл(.bmp или .jpeg) в диалоговом окне???

Русский текст в диалоговом окне
Кто-нибудь знает как в StaticText выводить русские буквы, а то у меня получается только ?????.....

Не функционирует button на диалоговом окне MFC
Всем привет! проблема заключается в следующем есть главное диалоговое окно на нем меню в меню есть пункт taskfile, при нажатии на...

Расположение элементов управления на диалоговом окне
здравствуйте, начинаю знакомиться со средой MS Visual C++, пишу в шестой версии. Столкнулся с такой проблемой: создал диалоговое приложение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru