Собственно как создать глобальную переменную?
Мне нужно иметь доступ к ней отовсюду в проекте.
Помогите советом плизз... :roll:
Глобальная переменная в MFC проекте? КАК?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Можно еще во фрейме прописать - а к нему доступ отовсюду есть (если конечно окно с виндовым интерфейсом)
В SAD - все в SAD.
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
в App классе, если проект MFC - это классический приём. Отовсюду можно будет написать AfxGetApp()->myVar. Если не MFC - то только с помощью extern.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Можно еще static приплести
Усложнять - легко, упрощать - сложно
Согласен с Romeo. Это решение в наибольшей степени соответствует идеологии MFC. Для ссылок надо, конечно, преобразовывать тип: ((CmyApp)AfxGetApp())->m_myVar. Я для этого пишу макро что-то вроде
#define GETAPP ((CmyApp)AfxGetApp())
Тогда обращение к переменной будет GETAPP->m_myVar.
#define GETAPP ((CmyApp)AfxGetApp())
Тогда обращение к переменной будет GETAPP->m_myVar.
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
господин Hup, хватит флэймить Static переменная является локальной для данного cpp файла. Static - есть противоположность extern.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
а имя документа можно через AfxGetApp достать? или для этого чего другое есть?
имя какого документа? CDocument?
В производных от CFrameWnd это GetActiveDocument(), у CView это (CSomeDocument*)m_pDocument
Когда вызываешь GetActiveDocument() класса CFrameWnd в MDI приложении надо проверять на соответствие runtime класса, например
if (GetActiveDocument()->IsKindOf(RUNTIME_CLASS(CSomeDocument)))
{ AfxMessageBox("CSomeDocument is active");}
В производных от CFrameWnd это GetActiveDocument(), у CView это (CSomeDocument*)m_pDocument
Когда вызываешь GetActiveDocument() класса CFrameWnd в MDI приложении надо проверять на соответствие runtime класса, например
if (GetActiveDocument()->IsKindOf(RUNTIME_CLASS(CSomeDocument)))
{ AfxMessageBox("CSomeDocument is active");}
Удачи... =)