Visual C++. Описание стандартных классов
Страница 27.


 
CWinApp
Класс CWinApp является базовым классом для создания объектов классов приложений Windows. Объект класса представления содержит функции, позволяющие инициализировать приложение пользователя (и каждый его экземпляр), а также запускать приложение на исполнение. Каждое приложение, использующее библиотеку MFC, может содержать только один объект класса CWinApp. Этот объект создается на этапе создания глобальных объектов и уже существует к моменту вызова функции WinMain, содержащейся в библиотеке MFC. Объявление объектов классов, производных от класса CWinApp, также должно быть глобальным. Функция InitInstance, принадлежащая данному классу, служит для создания объекта класса главного окна приложения. Кроме функций класса CWinApp библиотека MFC содержит следующие функции, позволяющие получить доступ к объектам класса CWinApp и к содержащейся в них информации.
"sectiontableheader"AfxGetApp - позволяет получить указатель на объект класса CWinApp.
"sectiontableheader"AfxGetInstanceHandle - позволяет получить указатель на текущую копию объекта класса приложения.
"sectiontableheader"AfxGetResourceHandle - позволяет получить дескриптор ресурсов приложения.
"sectiontableheader"AfxGetAppName - позволяет получить указатель на строку, содержащую имя приложения. Другим способом получить эту информацию является использование указателя на объект класса CWinApp для доступа к переменной-члену данного класса m_pszExeName, содержащей указатель на ту же самую строку.
Описание данного класса содержится в файле заголовка afxwin.h. Данный класс используется во многих демонстрационных приложениях, описанных в данной книге.
AddDocTemplate
void AddDocTemplate(CDocTemplate* pTemplate);
Аргументы
"sectiontableheader"pTemplate - указатель на объект класса CDocTemplate, который необходимо добавить в данное приложение.
Описание
Данная функция добавляет объект класса шаблона документа в список доступных шаблонов документов данного приложения. Список доступных шаблонов документов должен быть заполнен до вызова функции RegisterShellFileTypes.
EnableHtmlHelp
void EnableHtmlHelp();
Описание
Данная функция вызывается в конструкторе класса, производного от класса CWinApp, для обеспечения возможности использования в приложении справочной системы HTML. Эта функция присваивает переменной m_bUseHtmlHelp значение TRUE.
GetProfileString
CString GetProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszDefault = NULL);
Возвращаемое значение
Строка, хранящаяся в файле приложения с расширением .ini, или строка, передаваемая в аргументе lpszDefault, если указанная строка не содержится в файле с расширением .ini. Максимальная длина строки, которая может быть получена подобным образом, равна величине _MAX_PATH. Если величина lpszDefault равна нулю, то возвращается пустая строка.
Аргументы
"sectiontableheader"lpszSection - указатель на символьную строку, заканчивающуюся нулем, определяющую секцию, содержащую данную строку.
"sectiontableheader"lpszEntry - указатель на символьную строку, заканчивающуюся нулем, определяющую идентификатор строки в записи. Этот аргумент не может принимать нулевое значение.
"sectiontableheader"lpszDefault - указатель на символьную строку, заканчивающуюся нулем, содержащую строку, которая будет возвращаться функцией, если в соответствующем файле не будет найдена указанная строка.
Описание
Данная функция возвращает строку, связанную с идентификатором, содержащимся в указанной секции раздела системного реестра, отведенного данному приложению, или в файле с расширением .ini.
InitInstance
virtual BOOL InitInstance();
Возвращаемое значение
Ненулевое, если инициализация прошла успешно, в противном случае - ноль.
Описание
Операционная система Windows допускает одновременную работу нескольких копий одного приложения. Процесс создания приложения концептуально подразделяется на два этапа: предварительное создание приложения, которое осуществляется при первом запуске программы на исполнение, и инициализация экземпляра приложения, которая происходит при запуске на исполнение любой копии программы, включая и первую. Данная функция вызывается функцией WinMain, принадлежащей классу главного окна. Обычно, в процессе выполнения перегруженной пользователем функции InitInstance производится создание объекта главного окна программы и устанавливается значение члена класса CWinThread::m_pMainWnd, содержащего указатель на это окно.
LoadStdProfileSettings
void LoadStdProfileSettings(UINT nMaxMRU = _AFX_MRU_COUNT);
Аргументы
"sectiontableheader"nMaxMRU - текущее число элементов в списке недавно использованных файлов.
Описание
Вызов данной функции осуществляется из функции InitInstance для загрузки списка недавно использованных файлов и последнего установленного режима предварительного просмотра. Если аргумент nMaxMRU равен нулю, то в данном приложении не поддерживается список недавно использованных файлов. Если же он не указан, выбирается величина, указанная при создании проекта.
OnContextHelp
afx_msg void OnContextHelp();
Описание
Как правило, данная функция вызывается в том случае, когда пользователь нажимает комбинацию клавиш +.При перегрузке данной функции в карту сообщений класса, производного от класса CWinApp, включается строка ON_COMMAND(ID_CONTEXT_HELP, OnContextHelp) а в таблицу акселераторов приложения включается соответствующая запись. Функция OnContextHelp переводит приложение в режим вывода контекстной справки. Указатель мыши в этом режиме представляет собой комбинацию наклонной стрелки и знака вопроса. При помещении данного указателя на элемент управления диалогового окна, элемент окна или команду меню и нажатии левой кнопки мыши на экран выводится окно контекстной справки по данному элементу.
OnHelp
afx_msg void OnHelp();
Описание
Для вызова данной функции необходимо добавить в карту сообщений пользовательского класса, производного от класса CWinApp следующий макрос ON_COMMAND(ID_HELP, OnHelp) Обычно для вызова данной команды используется клавиша , однако, использование данной клавиши представляет собой общепринятую практику и нигде не регламентировано. По умолчанию данная функция обработки сообщения определяет контекст справки, соответствующий активному окну, диалоговому окну или команде меню, а затем вызывает на исполнение файл WinHelp.exe. Если для данного объекта не определен контекст, то используется контекст, определенный по умолчанию. Перегрузка данной функции позволяет задать контекст для объекта, отличного от объектов окна, диалогового окна, команды меню или кнопки панели инструментов, которым в данный момент принадлежит фокус ввода. В данной функции вызывается функция WinHelp, которой передается контекстный идентификатор справки.
OnHelpIndex
afx_msg void OnHelpIndex();
Описание
Если это разрешено, приложение вызывает эту функцию обработки сообщения при выборе пользователем команды меню Help|Index (Справка|Предметный указатель). В этой функции вызывается функция WinHelp с аргументом HELP_INDEX. Чтобы воспользоваться данной функцией, необходимо поместить в карту сообщений класса CWinApp макрос ON_COMMAND(ID_HELP_INDEX, OnHelpIndex).
ParseCommandLine
void ParseCommandLine(CCommandLineInfo& rCmdInfo);
Аргументы
"sectiontableheader"rCmdInfo - ссылка на объект класса CCommandLineInfo.
Описание
Данная функция вызывается для преобразования параметров командной строки в значения, присваиваемые элементам объекта класса CCommandLineInfo. Для заполнения каждого элемента данного объекта вызывается своя функция CCommandLineInfo::ParseParam.
При создании с использованием мастера AppWizard нового приложения, использующего библиотеку MFC, мастер AppWizard создает в функции InitInstance локальный объект класса CCommandLineInfo, а затем вызывает функции ProcessShellCommand и ParseCommandLine. Обработка параметров командной строки производится следующим образом:
1.После своего создания в функции InitInstance объект класса CCommandLineInfo передается в качестве параметра функции ParseCommandLine.
2.Функция ParseCommandLine последовательно вызывает функцию CCommandLineInfo::ParseParam для каждого параметра командной строки.
3.Функция ParseParam присваивает значения переменным в объекте класса CCommandLineInfo, который затем передается в качестве аргумента функции ProcessShellCommand.
4.Функция ProcessShellCommand производит действия, указанные в параметрах командной строки.
PreTranslateMessage
virtual BOOL PreTranslateMessage(MSG* pMsg);
Возвращаемое значение
Возвращает ненулевое значение, если данная функция завершила обработку сообщения, и нулевое значение, если необходимо вызвать процедуру стандартной обработки данного сообщения.
Аргументы
"sectiontableheader"pMsg - указатель на объект структуры MSG, содержащий обрабатываемое сообщение.
Описание
Перегрузка данной функции позволяет перехватывать сообщения, направляемые окну, до их передачи на обработку функциям TranslateMessage и DispatchMessage. По умолчанию данная функция обрабатывает нажатие сочетаний клавиш. Поэтому в перегруженной функции необходимо вызывать метод базового класса.
 
« Предыдущая статья   Следующая статья »