Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
CView
Класс CView обеспечивает основные функциональные возможности определяемых пользователем классов представления. Класс представления ассоциирован с классом документа и осуществляет интерфейс между документом и пользователем: класс представления реализует отображение документа на экране или принтере, а также передает информацию о реакции пользователя в документ.
Класс представления является производным от класса CWnd. Одна и та же рабочая область окна может совместно использоваться несколькими классами представления. Связь между классом представления и классом окна осуществляется в шаблоне документа. Когда пользователь открывает новое окно или разбивает существующее, шаблон документа создает новый класс представления и присоединяет это к документу.
Класс представления может быть присоединен только к одному документу, но к одному документу могут быть присоединены несколько классов представления. Эта ситуация может возникнуть при отображении документа в разделенном окне или в нескольких дочерних окнах в многооконного приложения (MDI). Приложение может поддерживать несколько различных классов представления, соответствующих одному и тому же классу документа. Например, программа обработки текстов могла бы обеспечивать как просмотр текста документа, так и просмотр его иерархической структуры, в котором содержатся только заголовки разделов. Эти различные классы представления могут выводить информацию в различные окна или в различные панели разделенного окна, если окно открыто в этом режиме.
Класс представления может получать информацию от пользователя через различные устройства, например, с клавиатуры, через щелчки и перемещения мыши, из команд меню, инструментальных панелей или полос прокрутки. Сообщения в данный класс поступают из связанного с ним окна. Если класс представления не обрабатывает данную команду, он передает ее связанному с ним классу документа. Для сопоставления идентификатору сообщения функции его обработки класс представления использует карту сообщений.
Класс представления осуществляет только отображение и изменение данных в документе, но не хранит эти изменения. Вся отображаемая на экране информация содержится в классе документа. Класс представления может непосредственно обращаться к данным, хранящимся в документе, если в последнем предусмотрены методы для доступа к этим данным.
После внесения изменений в документ класс представления, производящий данную операцию, обычно вызывает функцию CDocument::UpdateAllViews, посылающую другим классам просмотра, связанным с данным документом, сообщение о том, что в документ внесены изменения и классам просмотра необходимо обновить выводимую ими информацию. Эти сообщения обрабатываются функцией OnUpdate соответствующего класса просмотра.
Обычно, для вывода информации на экран используется функция CView::OnDraw. Эту функцию можно использовать, также, для осуществления предварительного просмотра печати и самой печати. Реализация цикла печати и предварительного просмотра документа возложена на приложение.
Описание данного класса содержится в файле заголовка afxwin. h.
Данный класс используется во многих демонстрационных приложениях, описанных в данной книге. Наиболее полное его описание приведено в главах 2 и 10.
DoPreparePrinting
BOOL DoPreparePrinting(CPrintInfo* pInfo);
Возвращаемое значение
Ненулевое, если может начаться процесс печати или предварительного просмотра печати. Нулевое, если выполнение операции было прервано.
Аргументы
q pInfo — указатель на объект класса CPrintInfo, содержащий описание текущего задания для принтера.
Описание
Данная функция вызывается из перегруженной функции OnPreparePrinting для вызова диалогового окна Печать и создания контекста устройства принтера.
Операции, выполняемые данной функцией зависят от того, был ли вызван режим печати или режим предварительного просмотра печати (определяется значением переменной m_bPreview, являющейся членом класса CPrintInfo, на объект которого указывает аргумент pInfo). Если производится распечатка файла, данная функция выводит диалоговое окно Печать, используя значения переменных объекта класса CPrintInfo, на который указывает аргумент pInfo. После закрытия диалогового окна функция DoPreparePrinting создает объект класса контекста устройства принтера, основываясь на значениях переменных аргумента pInfo, хранящих установки пользователя в диалоговом окне Печать. Этот контекст устройства используется для печати документа.
Если функция вызывается в режиме предварительного просмотра печати, данная функция создает контекст устройства принтера, основываясь на его текущих установках. Контекст устройства используется для имитации принтера в процессе предварительного просмотра.
GetDocument
CDocument* GetDocument() const;
Возвращаемое значение
Указатель на объект класса CDocument, связанный с данным классом представления или NULL, если с данным классом не связан никакой документ.
Описание
Данная функция вызывается для того, чтобы получить указатель на документ, связанный с данным классом представления. Это позволяет получить данному классу доступ к методам класса документа.
OnBeginPrinting
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
Аргументы
q pDC — указатель на объект класса контекста устройства принтера.
q pInfo — указатель на объект класса CPrintInfo, содержащий описание текущего задания для принтера.
Описание
Данная функция вызывается приложением при инициализации процесса печати или предварительного просмотра печати после вызова функции OnPreparePrinting. По умолчанию эта функция не выполняет никаких операций. Перегрузка данной функции позволяет включить в контекст устройства любые ресурсы GDI такие, как перья или шрифты, необходимые для осуществления процесса печати. Выбор объектов GDI в контекст устройства производится в функции OnPrint отдельно для каждой страницы. Если одни и те же объекты класса представления используются для вывода изображения на экран и для его печати, используйте различные идентификаторы для ресурсов GDI, используемых в каждом из этих режимов. Это позволит обновлять экран в процессе печати документа.
Функция OnBeginPrinting может использоваться, также и для инициализации величин, зависящих от параметров используемого принтера. Например, количество страниц, необходимое для печати документа может зависеть от установок, которые сделал пользователь в диалоговом окне Настройка принтера (таких, как размер страницы). В этом случае размер документа не может быть определен в функции OnPreparePrinting, в которой недоступна вся необходимая для этого информация, содержащаяся в объекте класса контекста устройства принтера, создаваемого на основании информации, полученной из диалогового окна Настройка принтера.
Функция OnBeginPrinting является первой перегружаемой функцией, имеющей доступ к объекту класса CDC, представляющего контекст устройства принтера. Поэтому размер документа может быть определен в этой функции. Если размер документа не будет определен в этой функции, в окне предварительного просмотра печати не появится полоса прокрутки.
OnDraw
virtual void OnDraw(CDC* pDC) = 0;
Аргументы
q pDC — указатель на объект класса контекста устройства, используемого для отображения информации, хранящейся в документе.
Описание
Данная функция вызывается приложением для отображения информации, хранящейся в документе. Приложение вызывает данную функцию, чтобы вывести изображение на экран, на печать или на предварительный просмотр печати. В каждом из этих случаев передаются указатель на объект класса контекста устройства, используемый в данном конкретном случае. Данная функция не имеет реализации по умолчанию.
Данная функция должна перегружаться в каждом пользовательском классе представления. Передаваемый в качестве параметра функции объект класса CDC позволяет функции получить доступ к таким ресурсам GDI, как перья, шрифты и кисти. Вызов функции CDC::RectVisible позволяет сократить объем вычислений при рисовании за счет отказа от рисования невидимых участков изображения. Значение, возвращаемое функцией CDC::IsPrinting, позволяет определить, будет ли данное изображение выводиться на принтер.
OnEndPrinting
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
Аргументы
q pDC — указатель на контекст устройства принтера.
q pInfo — указатель на объект класса CPrintInfo, содержащий описание данной работы.
Описание
Данная функция вызывается приложением после завершения процесса печати или предварительного просмотра документа. Версия данной функции, используемая по умолчанию, не выполняет никаких действий. Перегрузка этой функции производится для освобождения ресурсов GDI, выделенных в функции OnBeginPrinting.
OnPrepareDC
virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);
Аргументы
q pDC — указатель на объект класса контекста устройства, используемого для отображения документа.
q pInfo — указатель на объект структуры CPrintInfo, описывающей текущее задание печати, если функция OnPrepareDC используется для печати или предварительного просмотра печати документа. Переменная m_nCurPage данной структуры содержит номер печатаемой страницы документа. Если функция OnPrepareDC вызывается для вывода на экран, данный аргумент имеет нулевое значение.
Описание
Вызывается приложением перед вызовом функции OnDraw при выводе на экран или перед функцией OnPrint перед печатью каждой станицы документа или ее предварительным просмотром. По умолчанию данная функция не выполняет никаких действий при выводе изображения на экран. Однако, данная функция может быть перегружена в производных классах, таких как CScrollView, для настройки атрибутов контекста устройства. Поэтому при ее перегрузке в пользовательских классах следует вызывать метод базового класса перед выполнением пользовательских операторов.
Если данная функция вызывается для печати документа, то по умолчанию она проверяет содержимое объекта структуры, на который указывает аргумент pInfo. Если размер документа в данном объекте структуры не задан, функция OnPrepareDC считает, что документ содержит всего одну страницу и останавливает процесс печати после распечатки первой страницы документа. Для остановки процесса печати данная функция присваивает переменной m_bContinuePrinting, являющейся членом структуры CPrintInfo, значение FALSE.
Обычно функция OnPrepareDC перегружается чтобы:
r установить атрибуты контекста устройства для указанной страницы при ее печати. Например, в данной функции может быть установлен режим отображения;
r осуществить разбивку документа на страницы в процессе печати. Обычно, размер документа определяется при инициализации процесса его печати в функции OnPreparePrinting. Однако, в том случае, когда размер документа не может быть определен заранее (например, при печати неизвестного заранее числа записей базы данных), перегрузка функции OnPrepareDC позволяет проверять признак конца документа в процессе его печати. При достижении последней страницы документа данная функция присваивает переменной m_bContinuePrinting, являющейся членом структуры CPrintInfo, значение FALSE;
r посылать принтеру управляющие последовательности для его настройки на печать каждой страницы. Для посылки принтеру управляющих последовательностей вызовите функцию CDC::Escape для объект класса, на который указывает аргумент pDC.
При перегрузке данной функции первым ее оператором должен быть вызов метода базового класса.
OnPreparePrinting
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
Возвращаемое значение
Ненулевое для начала печати, и нулевое, если процесс печати был прерван.
Аргументы
q pInfo — указатель на объект класса CPrintInfo, содержащий описание текущего задания для принтера.
Описание
Вызывается приложением перед печатью или предварительным просмотром документа. По умолчанию не производит никаких действий.
Данная функция должна быть перегружена для обеспечения возможности печати или предварительного просмотром документа. В ней необходимо вызвать функцию DoPreparePrinting и передать ей аргумент pInfo. Значение, возвращаемое функцией DoPreparePrinting, является возвращаемым значением данной функции. Функция DoPreparePrinting выводит диалоговое окно Печать и создает контекст устройства принтера. Если при инициализации диалогового окна Печать следует указать значения параметров, отличные от значений, используемых для них по умолчанию, следует присвоить эти значения соответствующим переменным аргумента pInfo. Например, при известном числе страниц в документе следует вызвать функцию SetMaxPage, являющуюся членом класса CPrintInfo, на объект которого указывает аргумент pInfo, перед вызовом функции DoPreparePrinting. Эта величина определит значения, выводимые в текстовых полях Страницы с: и по: диалогового окна Печать.
Функция DoPreparePrinting не выводит диалоговое окно Печать в режиме предварительного просмотра печати. Чтобы не выводить диалоговое окно Печать при печати документа, проверьте, что переменная m_bPreview, являющаяся членом класса CPrintInfo, на объект которого указывает аргумент pInfo, имеет значение FALSE, присвойте ей значение TRUE перед вызовом функции DoPreparePrinting и восстановите значение FALSE после выхода из этой функции.
Если необходимо произвести инициализацию, использующую объект класса CDC, представляющий контекст устройства принтера (например, для определения размера печатаемой страницы для определения количества страниц в документе), перегрузите функцию OnBeginPrinting.
Если необходимо установить значение переменных m_nNumPreviewPages или m_strPageDesc, являющихся членами класса CPrintInfo, на объект которого указывает аргумент pInfo, сделайте это после вызова функции DoPreparePrinting. Функция DoPreparePrinting присваивает переменной m_nNumPreviewPages значение из файла инициализации и присваивает переменной m_strPageDesc ее значение по умолчанию.
OnPrint
virtual void OnPrint(CDC* pDC, CPrintInfo* pInfo);
Аргументы
q pDC — указатель на объект класса контекста устройства принтера.
q pInfo — указатель на объект класса CPrintInfo, содержащий описание текущего задания для принтера.
Описание
Вызывается приложением для печати или предварительного просмотра страницы документа. Для каждой печатаемой страницы приложение вызывает данную функцию сразу же после вызова функции OnPrepareDC. Номер печатаемой страницы определяется значением переменной m_nCurPage, являющейся членом класса CPrintInfo, на объект которого указывает аргумент pInfo. По умолчанию данная функция вызывает функцию OnDraw и передает ей контекст устройства принтера.
Данная функция перегружается для решения следующих задач:
r для печати многостраничных документов. При печати документа с использованием функции OnDraw для определения фрагмент документа, который будет распечатываться на данной странице, необходимо установить начало отсчета рабочей области (однако данная операция обычно производится в функции OnPrepareDC);
r для изменения формы отображения документа при печати (в том случае, если приложение не соответствует принципу "Что вы видите, то вы и имеете"). В данном случае вместо того, чтобы передавать контекст устройства функции OnDraw, пользователь может вызвать собственную функцию, выводящую документ на печать и использующую для обработки изображения параметры, отличные от тех, которые используются при выводе его на экран;
r для использования при печати документа дополнительных ресурсов GDI, не используемых при выводе его на экран. Ресурсы GDI должны выбираться в контекст устройства перед началом процесса печати и освобождаться после его завершения. Эти ресурсы создаются в функции OnBeginPrinting и уничтожаться в функции OnEndPrinting;
r для вывода колонтитулов. При этом можно использовать функцию OnDraw, ограничив ей область печати.
Переменная m_rectDraw, являющаяся членом класса CPrintInfo, на объект которого указывает аргумент pInfo, содержит размеры области печати страницы, выраженные в логических единицах. Не следует вызывать функцию OnPrepareDC при перегрузке функции OnPrint, поскольку приложение автоматически вызывает функцию OnPrepareDC перед вызовом функции OnPrint.
OnUpdate
virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
Аргументы
q pSender — указатель на объект класса представления или NULL, если необходимо модифицировать все классы представления.
q lHint — содержит информацию об изменениях.
q pHint — указатель на объект, хранящий информацию об изменениях.
Описание
Данная функция является функцией обработки сообщения, посылаемого функцией CDocument::UpdateAllViews. Функция UpdateAllViews вызывается классом представления после внесения изменений в связанный с ним документ. Функция OnUpdate вызывается, также, функцией CView::OnInitialUpdate. По умолчанию функция OnUpdate посылает сообщение о необходимости перерисовки всей рабочей области окна, которая будет произведена после получения очередного сообщения WM_PAINT. Для того чтобы перерисовывалась не вся рабочая область окна, а только ее часть, необходимо перегрузить данную функцию в пользовательском классе представления. Информация об области перерисовки должна передаваться во втором или третьем параметре данной функции.
Параметр lHint данной функции обычно используется для передачи битовой маски или переменной перечислимого типа. Параметр pHint является указателем на объект класса CObject, который может содержать достаточно сложные структуры данных. Для определения типа передаваемого объекта в перегруженной функции OnUpdate, обычно, используется функция CObject::IsKindOf.
Как правило, функция OnUpdate не содержит вызовов функций отображения графической информации. Вместо этого она определяет прямоугольник, заданный в экранной системе координат, определяющий область экрана, нуждающуюся в обновлении, и передает указатель на него в качестве первого аргумента функции CWnd::InvalidateRec. Содержимое указанной области будет обновлено после получения очередного сообщения WM_PAINT.
Если аргумент lHint имеет значение 0, а аргумент pHint — NULL, то документ посылает стандартное сообщение о необходимости перерисовки рабочей области данного класса представления. После получения стандартного сообщения о необходимости перерисовки рабочей области или в том случае, когда класс представления не смог определить, какую информацию ему передали в параметрах сообщения, он производит обновление всей своей рабочей области.
CWinApp
Класс CWinApp является базовым классом для создания объектов классов приложений Windows. Объект класса представления содержит функции, позволяющие инициализировать приложение пользователя (и каждый его экземпляр), а также запускать приложение на исполнение.
Каждое приложение, использующее библиотеку MFC, может содержать только один объект класса CWinApp. Этот объект создается на этапе создания глобальных объектов и уже существует к моменту вызова функции WinMain, содержащейся в библиотеке MFC. Объявление объектов классов, производных от класса CWinApp, также должно быть глобальным.
Функция InitInstance, принадлежащая данному классу, служит для создания объекта класса главного окна приложения.
Кроме функций класса CWinApp библиотека MFC содержит следующие функции, позволяющие получить доступ к объектам класса CWinApp и к содержащейся в них информации.
r AfxGetApp — позволяет получить указатель на объект класса CWinApp.
r AfxGetInstanceHandle — позволяет получить указатель на текущую копию объекта класса приложения.
r AfxGetResourceHandle — позволяет получить дескриптор ресурсов приложения.
r AfxGetAppName — позволяет получить указатель на строку, содержащую имя приложения. Другим способом получить эту информацию является использование указателя на объект класса CWinApp для доступа к переменной-члену данного класса m_pszExeName, содержащей указатель на ту же самую строку.
Описание данного класса содержится в файле заголовка afxwin. h.
Данный класс используется во многих демонстрационных приложениях, описанных в данной книге. Наиболее полное его описание приведено в главе 2.
AddDocTemplate
void AddDocTemplate(CDocTemplate* pTemplate);
Аргументы
q 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 равна нулю, то возвращается пустая строка.
Аргументы
q lpszSection — указатель на символьную строку, заканчивающуюся нулем, определяющую секцию, содержащую данную строку.
q lpszEntry — указатель на символьную строку, заканчивающуюся нулем, определяющую идентификатор строки в записи. Этот аргумент не может принимать нулевое значение.
q lpszDefault — указатель на символьную строку, заканчивающуюся нулем, содержащую строку, которая будет возвращаться функцией, если в соответствующем файле не будет найдена указанная строка.
Описание
Данная функция возвращает строку, связанную с идентификатором, содержащимся в указанной секции раздела системного реестра, отведенного данному приложению, или в файле с расширением. ini.
InitInstance
virtual BOOL InitInstance();
Возвращаемое значение
Ненулевое, если инициализация прошла успешно, в противном случае — ноль.
Описание
Операционная система Windows допускает одновременную работу нескольких копий одного приложения. Процесс создания приложения концептуально подразделяется на два этапа: предварительное создание приложения, которое осуществляется при первом запуске программы на исполнение, и инициализация экземпляра приложения, которая происходит при запуске на исполнение любой копии программы, включая и первую. Данная функция вызывается функцией WinMain, принадлежащей классу главного окна.
Обычно, в процессе выполнения перегруженной пользователем функции InitInstance производится создание объекта главного окна программы и устанавливается значение члена класса CWinThread::m_pMainWnd, содержащего указатель на это окно.
LoadStdProfileSettings
void LoadStdProfileSettings(UINT nMaxMRU = _AFX_MRU_COUNT);
Аргументы
q nMaxMRU — текущее число элементов в списке недавно использованных файлов.
Описание
Вызов данной функции осуществляется из функции InitInstance для загрузки списка недавно использованных файлов и последнего установленного режима предварительного просмотра. Если аргумент nMaxMRU равен нулю, то в данном приложении не поддерживается список недавно использованных файлов. Если же он не указан, выбирается величина, указанная при создании проекта.
OnContextHelp
afx_msg void OnContextHelp();
Описание
Как правило, данная функция вызывается в том случае, когда пользователь нажимает комбинацию клавиш <SHIFT>+<F1>.При перегрузке данной функции в карту сообщений класса, производного от класса CWinApp, включается строка
ON_COMMAND(ID_CONTEXT_HELP, OnContextHelp)
а в таблицу акселераторов приложения включается соответствующая запись.
Функция OnContextHelp переводит приложение в режим вывода контекстной справки. Указатель мыши в этом режиме представляет собой комбинацию наклонной стрелки и знака вопроса. При помещении данного указателя на элемент управления диалогового окна, элемент окна или команду меню и нажатии левой кнопки мыши на экран выводится окно контекстной справки по данному элементу.
OnHelp
afx_msg void OnHelp();
Описание
Для вызова данной функции необходимо добавить в карту сообщений пользовательского класса, производного от класса CWinApp следующий макрос
ON_COMMAND(ID_HELP, OnHelp)
Обычно для вызова данной команды используется клавиша <F1>, однако, использование данной клавиши представляет собой общепринятую практику и нигде не регламентировано.
По умолчанию данная функция обработки сообщения определяет контекст справки, соответствующий активному окну, диалоговому окну или команде меню, а затем вызывает на исполнение файл 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);
Аргументы
q 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);
Возвращаемое значение
Возвращает ненулевое значение, если данная функция завершила обработку сообщения, и нулевое значение, если необходимо вызвать процедуру стандартной обработки данного сообщения.
Аргументы
q pMsg — указатель на объект структуры MSG, содержащий обрабатываемое сообщение.
Описание
Перегрузка данной функции позволяет перехватывать сообщения, направляемые окну, до их передачи на обработку функциям TranslateMessage и DispatchMessage. По умолчанию данная функция обрабатывает нажатие сочетаний клавиш. Поэтому в перегруженной функции необходимо вызывать метод базового класса.
ProcessShellCommand
BOOL ProcessShellCommand(CCommandLineInfo& rCmdInfo);
Возвращаемое значение
Ненулевое, если переданные данной функции команды были выполнены успешно, в противном случае функция InitInstance возвращает ноль.
Аргументы
q rCmdInfo — ссылка на объект класса CCommandLineInfo.
Описание
Данная функция вызывается в функции InitInstance для обработки параметров командной строки, передаваемых ей в объекте структуры CCommandLineInfo.
При создании с использованием мастера AppWizard нового приложения, использующего библиотеку MFC, мастер AppWizard создает в функции InitInstance локальный объект класса CCommandLineInfo, а затем вызывает функции ProcessShellCommand и ParseCommandLine. Обработка параметров командной строки производится следующим образом:
1. После своего создания в функции InitInstance объект класса CCommandLineInfo передается в качестве параметра функции ParseCommandLine.
2. Функция ParseCommandLine последовательно вызывает функцию CCommandLineInfo::ParseParam для каждого параметра командной строки.
3. Функция ParseParam присваивает значения переменным в объекте класса CCommandLineInfo, который затем передается в качестве аргумента функции ProcessShellCommand.
4. Функция ProcessShellCommand производит действия, указанные в параметрах командной строки.
Переменная CCommandLineInfo::m_nShellCommand представляет собой переменную перечислимого типа, определенную в классе CCommandLineInfo следующим образом:
enum{
FileNew,
FileOpen,
FilePrint,
FilePrintTo,
FileDDE,
};
SetRegistryKey
void SetRegistryKey(LPCTSTR lpszRegistryKey);
void SetRegistryKey(UINT nIDRegistryKey);
Аргументы
q lpszRegistryKey — указатель на строку, содержащую имя ключа.
q nIDRegistryKey — идентификатор или индекс ключа в реестре.
Описание
Вызов данной функции позволяет сохранять параметры начальной установки вашего приложения в системном реестре, а не в файлах с расширением ini, как это имело место в старых версиях Windows. В ней устанавливается ключ m_pszRegistryKey, который может затем использоваться в функциях, членах класса CWinApp, таких, как GetProfileInt, GetProfileString, WriteProfileInt и WriteProfileString. Вызов данной функции приводит к сохранению в системном регистре списка недавно использованных файлов. В качестве ключа регистрации обычно выбирается название компании. В этом случае адрес конкретной переменной в системном реестре выглядит следующим образом HKEY_CURRENT_USER\Software\<название компании>\<имя приложения>\<имя секции>\<идентификатор переменной>.
WinHelp
virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
Аргументы
q dwData — определяет дополнительную информацию. Трактовка данного аргумента зависит от значения аргумента nCmd.
q nCmd — определяет тип запрашиваемой справочной информации. Список возможных значений данного аргумента совпадает со списком возможных значений аргумента dwData глобальной функции WinHelp.
Описание
Данная функция вызывается для запуска приложения WinHelp. Приложение WinHelp автоматически закрывается при закрытии вызвавшего его приложения.
WriteProfileString
BOOL WriteProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszValue);
Возвращаемое значение
Ненулевое, если операция прошла успешно, и ноль в противном случае.
Аргументы
q lpszSection — указатель на символьную строку, заканчивающуюся нулем, определяющее секцию, содержащую данную строку. Если данная секция не существует, то она создается. Имя секции не зависит от регистра используемых в ней символов, и она может представлять собой любую комбинацию заглавных и прописных букв.
q lpszEntry — указатель на символьную строку, заканчивающуюся нулем, определяющую идентификатор строки в записи. Если данный идентификатор в секции не существует, то он создается.
q lpszValue — указатель на строку, которую необходимо сохранить. Если этот параметр имеет значение NULL, то идентификатор, указанный в аргументе lpszEntry, удаляется из записи.
Описание
Данная функция вызывается для сохранения указанной строки в указанной секции реестра приложения или в файле с расширением. ini.
CWinThread
Объекты класса CWinThread представляют собой потоки, исполняющиеся в приложении. Основной поток приложения обычно представлен объектом класса, производного от класса CWinApp, который, в свою очередь, является производным от класса CWinThread. Дополнительные объекты класса CWinThread позволяют создавать несколько потоков в одном приложении.
Существуют две основные разновидности потоков: рабочие потоки и интерфейсные потоки. Рабочие потоки не содержат цикла обработки сообщений. Примером такого потока может служить выполнение фоновых вычислений в приложении, использующем рабочие листы. Интерфейсные потоки содержат цикл обработки сообщений и могут обрабатывать сообщения, поступающие от системы. Класс CWinApp и производные от него классы являются примером интерфейсных потоков. Другие классы интерфейсных потоков могут производиться непосредственно от класса CWinThread.
Объекты класса CWinThread обычно уничтожаются при завершении потоком своей работы. Для того чтобы эти объекты сохранялись после завершения потоком своей работы необходимо присвоить переменной m_bAutoDelete значения FALSE.
Вся информация, необходимая для взаимодействия потока с приложением содержится в соответствующем объекте класса CWinThread. Поэтому любой поток, использующий библиотеку MFC должен быть производным от данного класса. Например, поток, созданный функцией _beginthreadex, не может использоваться в приложениях, использующих библиотеку MFC.
Поток создается функцией AfxBeginThread. Эта функция имеет две версии, первая из которых создает рабочий поток, а вторая — интерфейсный поток. При создании рабочего потока первым аргументом функции AfxBeginThread является указатель на исполняющую функцию данного потока. При создании интерфейсного потока первым аргументом функции AfxBeginThread является указатель на объект структуры CRuntimeClass пользовательского класса, производного от класса CWinThread. В обеих версиях функций могут быть указаны дополнительные аргументы, определяющие приоритет потока, размер его стека и атрибуты безопасности. Функция AfxBeginThread возвращает указатель на созданный ею объект класса, производного от класса CWinThread.
Вместо вызова функции AfxBeginThread объект класса, производного от класса CWinThread, может быть создан своим конструктором, после чего для него должна быть вызвана функция CreateThread. Этот двухэтапный метод может использоваться для последовательного создания нескольких потоков с использованием одного объекта класса CWinThread.
Описание данного класса содержится в файле заголовка afxwin. h.
Данный класс используется во многих демонстрационных приложениях, описанных в данной книге. Наиболее полное его описание приведено в главе 12.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |


