Глобальная переменная в MFC проекте? КАК?

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Глобальная переменная в MFC проекте? КАК?

sand » 22 окт 2004, 22:17

понял.
спасибо.

Romeo » 22 окт 2004, 12:36

Код: Выделить всё

((CMyApp *)AfxGetApp())->myVar

sand » 22 окт 2004, 07:50

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

Acidy » 19 окт 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 » 07 окт 2004, 13:24

а имя документа можно через AfxGetApp достать? или для этого чего другое есть?

Romeo » 07 окт 2004, 12:59

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

sand » 07 окт 2004, 12:51

огромное спасибочки!!!!!

Sq » 07 окт 2004, 12:18

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

#define GETAPP ((CmyApp)AfxGetApp())

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

Hup » 07 окт 2004, 12:13

Можно еще static приплести :)

Romeo » 07 окт 2004, 12:06

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

Вернуться к началу