Страница 1 из 2
Глобальная переменная в MFC проекте? КАК?
Добавлено: 07 окт 2004, 06:33
sand
Собственно как создать глобальную переменную?
Мне нужно иметь доступ к ней отовсюду в проекте.
Помогите советом плизз... :roll:
Добавлено: 07 окт 2004, 09:32
Absurd
Добавь в stdafx.h строку
extern int globalVar;
а в каком-нибудь cpp файле напиши
int globalVar = 0;
Получишь переменную globalVar, инициализируемую нулем.
Добавлено: 07 окт 2004, 11:09
Kolinus
Можно еще во фрейме прописать - а к нему доступ отовсюду есть (если конечно окно с виндовым интерфейсом)
Добавлено: 07 окт 2004, 12:06
Romeo
в App классе, если проект MFC - это классический приём. Отовсюду можно будет написать AfxGetApp()->myVar. Если не MFC - то только с помощью extern.
Добавлено: 07 окт 2004, 12:13
Hup
Можно еще static приплести
Добавлено: 07 окт 2004, 12:18
Sq
Согласен с Romeo. Это решение в наибольшей степени соответствует идеологии MFC. Для ссылок надо, конечно, преобразовывать тип: ((CmyApp)AfxGetApp())->m_myVar. Я для этого пишу макро что-то вроде
#define GETAPP ((CmyApp)AfxGetApp())
Тогда обращение к переменной будет GETAPP->m_myVar.
Добавлено: 07 окт 2004, 12:51
sand
огромное спасибочки!!!!!
Добавлено: 07 окт 2004, 12:59
Romeo
господин
Hup, хватит флэймить
Static переменная является локальной для данного cpp файла. Static - есть
противоположность extern.
Добавлено: 07 окт 2004, 13:24
sand
а имя документа можно через AfxGetApp достать? или для этого чего другое есть?
Добавлено: 19 окт 2004, 11:48
Acidy
имя какого документа? CDocument?
В производных от CFrameWnd это GetActiveDocument(), у CView это (CSomeDocument*)m_pDocument
Когда вызываешь GetActiveDocument() класса CFrameWnd в MDI приложении надо проверять на соответствие runtime класса, например
if (GetActiveDocument()->IsKindOf(RUNTIME_CLASS(CSomeDocument)))
{ AfxMessageBox("CSomeDocument is active");}