PDA

Просмотр полной версии : Глобальная переменная в MFC проекте? КАК?



sand
07.10.2004, 06:33
Собственно как создать глобальную переменную?
Мне нужно иметь доступ к ней отовсюду в проекте.
Помогите советом плизз... :roll:

Absurd
07.10.2004, 09:32
Добавь в stdafx.h строку

extern int globalVar;

а в каком-нибудь cpp файле напиши

int globalVar = 0;

Получишь переменную globalVar, инициализируемую нулем.

Kolinus
07.10.2004, 11:09
Можно еще во фрейме прописать - а к нему доступ отовсюду есть (если конечно окно с виндовым интерфейсом)

Romeo
07.10.2004, 12:06
в App классе, если проект MFC - это классический приём. Отовсюду можно будет написать AfxGetApp()->myVar. Если не MFC - то только с помощью extern.

Hup
07.10.2004, 12:13
Можно еще static приплести :)

Sq
07.10.2004, 12:18
Согласен с Romeo. Это решение в наибольшей степени соответствует идеологии MFC. Для ссылок надо, конечно, преобразовывать тип: ((CmyApp)AfxGetApp())->m_myVar. Я для этого пишу макро что-то вроде

#define GETAPP ((CmyApp)AfxGetApp())

Тогда обращение к переменной будет GETAPP->m_myVar.

sand
07.10.2004, 12:51
огромное спасибочки!!!!!

Romeo
07.10.2004, 12:59
господин Hup, хватит флэймить :) Static переменная является локальной для данного cpp файла. Static - есть противоположность extern.

sand
07.10.2004, 13:24
а имя документа можно через AfxGetApp достать? или для этого чего другое есть?

Acidy
19.10.2004, 11:48
имя какого документа? CDocument?
В производных от CFrameWnd это GetActiveDocument(), у CView это (CSomeDocument*)m_pDocument
Когда вызываешь GetActiveDocument() класса CFrameWnd в MDI приложении надо проверять на соответствие runtime класса, например
if (GetActiveDocument()->IsKindOf(RUNTIME_CLASS(CSomeDocument)))
{ AfxMessageBox("CSomeDocument is active");}

sand
22.10.2004, 07:50
в App классе, если проект MFC - это классический приём. Отовсюду можно будет написать AfxGetApp()->myVar. Если не MFC - то только с помощью extern.Чего-то не получается... Как ее нужно объявить в App классе, чтобы была видна везде?
У меня пишет ошибку: "'myVar' : is not a member of 'CWinApp'"

Romeo
22.10.2004, 12:36
((CMyApp *)AfxGetApp())->myVar

sand
22.10.2004, 22:17
понял.
спасибо.