- •3 Базовые классы библиотеки mfc
- •Класс cObject
- •Методы и переменные класса cObject
- •Класс cWinApp
- •IpszResourceName - указатель на строку, содержащую имя ресурса пиктограммы. (Тип параметра также может быть cString.) nIdResource - id ресурса пиктограммы.
- •Методы - обработчики сообщений
- •Класс cWnd
- •Методы инициализации
- •Методы управления состоянием окна
- •Управление размером и положением окна
- •Методы управления доступом
- •Методы обновления и перерисовки окна
- •IpRectUpdate - структура rect, определяющая координаты обновляемой прямоугольной области. Данный параметр игнорируется, если prgnUpdate содержит ненулевой указатель области.
- •Методы преобразования координат
- •Методы работы с текстом окна
- •Методы управления линейкой прокрутки
- •Методы управления курсором ввода
- •Методы управления элементами диалогового окна
- •IpString - указатель на буфер, содержащий выбранную строку списка.
- •IpStr - указатель на буфер, в который заносится текст или заголовок элемента управления.
- •Методы работы с меню
- •Методы управления таймером
- •Предупреждающие методы
- •Методы управления сообщениями
- •Переопределяемые методы
- •Методы, вызываемые для обработки сообщений
- •IpCreateStruct - структура createstruct, содержащая информацию о создаваемом объекте cWnd.
- •Класс cFile
- •Члены класса
- •IpszFileName - строка, указывающая в кодировке Windows абсолютный или относительный путь к имени файла. Не может содержать сетевого имени.
Класс cWinApp
Класс CWinApp является базовым классом для объекта приложение. Этот класс предоставляет средства инициализации и управления приложением (и каждым его экземпляром).
Любое приложение может содержать только один объект класса CWinApp или производного от него. Для того чтобы создать и отобразить главное окно приложения, следует переопределить метод Initlnstance в создаваемом производном классе класса CWinApp, добавив в него, например, следующий код - для приложения диалога: CDerivedCDialog dig; int nResponse=dlg.DoModal(); - для SDI-приложения: CSingleDocTemplate* pDocTemplate; pDocTemplate = new CsingleDocTemplate (IDR MAINFRAME, RUNTIME_CLASS(CDerivedCDialog), RUNTIME_CLASS(CDerivedCFrameWnd), RUNTIME_CLASS(CDerivedCView)); AddDocTemplate(pDocTemplate); m_pMainWnd->ShowWindow(SH_SHOW); m_pJMainWnd->UpdateWindow(); |
Класс CWinApp инкапсулирует выполнение функции WinMain и цикл обработки сообщений (каждому сообщению соответствует метод - член класс). Фактически функция WinMain для инициализации приложения вызывает метод Initlnstance, а затем вызывает функцию Run для обработки сообщений. И при завершении приложения вызывается метод Exitlnstance.
Далее в гл. 4 будут приведены примеры переопределения метода Initlnstance при создании различных типов приложений.
Члены класса
CWinApp::m_pszAppName
Переменная указывает имя приложения.
Имя приложения последовательно определяется из следующей информации (что присутствует первым):
-
параметра, передаваемого конструктору CWinApp;
-
ресурса с ID AFX_IDS_APP_TITLE;
-
имени .ЕХЕ-файла приложения.
Переменная m_pszAppName является общедоступной (public) переменной типа const char* и может быть получена вызовом глобальной функции AfxGetAppName.
Для того чтобы переопределить значение данной переменной, первоначально следует освободить память, выделенную под это значение при запуске приложения, а затем изменить значение переменной mjpszAppName, используя функцию библиотеки времени выполнения _tcsdup,() для повторного выделения памяти.
Пример:
// Переименование free((void*)m_pszAppName); m_pszAppName=_tcsdup(_T("d:\\Newdir\\MyAppl.exe")); // Три способа использования имени приложения в заголовке окна CWnd* pWnd; //1 pWnd->MessageBox("TeKCT сообщения", AfxGetApp()->m pszAppName); //2 pWnd->MessageBox("TeKCT сообщения ", AfxGetAppName()); //3 AfxMessageBox("TeKCT сообщения"); |
CWinApp: :m_hlnstance
Переменная является указателем на текущий экземпляр выполняемого под Windows приложения. Значение этой переменной возвращается глобальной функцией AfxGetlnstanceHandle; m_hlnstance это - public-переменная типа HINSTANCE.
CWinApp::m_lpCmdLine
Переменная является указателем (LPSTR) на командную строку, ограниченную 0-символом. Эта переменная используется для доступа к аргументам командной строки, введенным пользователем при запуске приложения.
Пример:
BOOL CMyApp::lnitInstance() { … if (m_lpCmdLine[0] == '\0') // Создаем новый файл. { OnFileNew(); } Else // Открываем файл, указанный аргументом командной строки. { OpenDocumentFile(m_lpCmdLine); } … } |
CWinApp (LPCTSTR ipszAppName = NULL);
Конструктор объекта приложения. Сохраняет указатель на объект приложения класс CWinApp. Функция WinMain может использовать этот указатель для вызова методов класса при инициализации и выполнении приложения.
Если указан параметр, то он сохраняется как имя приложения. В противном случае используется значение ресурс AFX_IDS_APP_TITLE или имя выполнимого файла приложения.
HCURSOR LoadCursor (LPCTSTR IpszResourceName) const;
HCURSOR LoadCursor (UINT nIDResource) const;
Метод загружает указанный курсор и при успешном выполнении воз-вращает указатель на курсор, в противном случае - NULL.
Параметры:
IpszResourceName - указатель на строку, содержащую имя ресурса курсора. (Тип параметра также может быть CString.) nIDResource - ID ресурса курсора.
Для доступа к стандартным Windows-курсорам можно использовать методы LoadStandardCursor и LoadOEMCursor.
HCURSOR LoadStandardCursor (LPCTSTR ipszCursorName) const;
Метод загружает указанный курсор и при успешном выполнении возвращает указатель на курсор, в противном случае - NULL.
Параметры:
IpszCursorName - указатель на строку, содержащую имя Windows-курсора, начинающееся с префикса IDC. Эти идентификаторы определены в файле WINDOWS.Н. В следующем списке приведены возможные значения параметра IpszCursorName:
IDC_ARROW Стандартный курсор стрелка;
IDС_1ВЕАМ Курсор текстовой вставки;
IDC_WAIT Курсор ожидания (песочные часы);
IDC_CROSS Курсор для выделения;
IDCJLJPARROW Стрелка вверх;
IDC_SIZEALL Четырехконечная стрелка;
IDC_SIZENWSE Двунаправленная стрелка: верхний левый – нижний правый угол;
IDC_SIZENESW Двунаправленная стрелка: верхний правый – нижний левый угол;
IDC_SIZEWE Горизонтальная двунаправленная стрелка;
IDC_SIZENS Вертикальная двунаправленная стрелка.
Пример:
HCURSOR hCursor; hCursor = AfxGetApp()->LoadStandardCursor(IDC_UPARROW); |
HCURSOR LoadOEMCursor (UINT nIDCursor) const;
Метод загружает указанный курсор и при успешном выполнении возвращает указатель на курсор, в противном случае - NULL.
Параметры:
nIDCursor - ID Windows-курсора, начинающийся с префикса OCR_. Эти идентификаторы определены в файле WINDOWS.H.
Для использования этих ресурсов (OCR_) следует в текст программы вставить строку #define OEMRESOURCE.
HICON Loadlcon (LPCTSTR IpszResourceName) const;
HICON Loadlcon (UINT nIDResource) const;
Метод загружает указанную пиктограмму и при успешном выполнении возвращает указатель на нее, в противном случае - NULL.
Параметры: