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

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

10.06.2008, 16:08. Показов 2186. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru