Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
16.02.2016
Размер:
544.77 Кб
Скачать

Класс 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.

Параметры:

Соседние файлы в папке VC++Баженова