- •3 Базовые классы библиотеки mfc
- •Класс cObject
- •Методы и переменные класса cObject
- •Класс cWinApp
- •IpszResourceName - указатель на строку, содержащую имя ресурса пиктограммы. (Тип параметра также может быть cString.) nIdResource - id ресурса пиктограммы.
- •Методы - обработчики сообщений
- •Класс cWnd
- •Методы инициализации
- •Методы управления состоянием окна
- •Управление размером и положением окна
- •Методы управления доступом
- •Методы обновления и перерисовки окна
- •IpRectUpdate - структура rect, определяющая координаты обновляемой прямоугольной области. Данный параметр игнорируется, если prgnUpdate содержит ненулевой указатель области.
- •Методы преобразования координат
- •Методы работы с текстом окна
- •Методы управления линейкой прокрутки
- •Методы управления курсором ввода
- •Методы управления элементами диалогового окна
- •IpString - указатель на буфер, содержащий выбранную строку списка.
- •IpStr - указатель на буфер, в который заносится текст или заголовок элемента управления.
- •Методы работы с меню
- •Методы управления таймером
- •Предупреждающие методы
- •Методы управления сообщениями
- •Переопределяемые методы
- •Методы, вызываемые для обработки сообщений
- •IpCreateStruct - структура createstruct, содержащая информацию о создаваемом объекте cWnd.
- •Класс cFile
- •Члены класса
- •IpszFileName - строка, указывающая в кодировке Windows абсолютный или относительный путь к имени файла. Не может содержать сетевого имени.
Методы управления сообщениями
static const MSG* PASCAL GetCurrentMessage ();
Метод возвращает указатель на структуру MSG, содержащую текущее обрабатываемое окном сообщение. Этот метод может быть вызван только из обработчика события OnMessage.
LRESULT Default ();
Метод вызывает процедуру обработки сообщения, предусмотренную по умолчанию.
LRESULT SendMessage (UINT message, WPARAM wParam = 0, LPARAM IParam = 0);
Метод посылает окну указанное сообщение и возвращает результат обработки сообщения.
BOOL PostMessage (UINT message, WPARAM wParam = 0, LPARAM
IParam = C);
Метод помещает сообщение в очередь сообщений окна и, если сообщение передано, возвращает ненулевое значение, не ожидая завершения обработки окном данного сообщения (в отличие от предыдущего метода). BOOL SendNotifyMessage (UINT message, WPARAM wParam, LPARAM IParam);
Метод посылает окну указанное сообщение, возвращая управление сразу или после обработки сообщения, в зависимости от задачи, создавшей данное окно.
Переопределяемые методы
virtual void DoDataExchange (CDataExchange* pDX);
Этот метод используется для обновления данных: обмена данными между элементами управления окна и соответствующими им переменными, а также для контроля достоверности данных.
Параметры: pDX- указатель объекта CDataExchange.
Переопределение этого метода состоит в описании вызовов методов, связывающих идентификатор элемента управления и переменную класса.
Этот метод не должен вызываться непосредственно. Для его вызова следует использовать вызов метода UpdateData с параметром, указывающим направление обмена (из переменных в элементы управления или наоборот). Для того чтобы автоматизировать процедуру создания переопределенного метода DoDataExchange для диалогового окна, необходимо выполнить такую последовательность действий:
-
создать в редакторе ресурсов диалоговое окно и все его элементы управления для класса, производного от CDialog;
-
вызвать ClassWizard и определить для созданных ресурсов соответствующие им переменные и диапазоны допустимых значений.
В этом случае ClassWizard будет сам автоматически вставлять код переопределенного метода DoDataExchange. Пример:
// Пример переопределения метода DoDataExchange void CMyDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMyDlg) DDX_Text(pDX, IDC_MY1, m_nMyl); // Второй параметр – // идентификатор ресурса, третий - идентификатор переменной DDV MinMaxInt(pDX, m nMyl, 1,20); // Диапазон допустимых значений //}}AFX DATA MAP } |
Методы, вызываемые для обработки сообщений
При использовании библиотеки MFC обработка сообщений выполняется в соответствии с таблицами сообщений. Таблица сообщений класса записывается между макросами BEGIN_MESSAGE_MAP(CWmdow,CParent) и END_MESSAGE_MAP(). В ней указываются методы, используемые для обработки сообщений. В этом разделе будут рассмотрены некоторые методы класса CWnd, используемые для обработки сообщений.
Название вызываемого метода соответствует названию произошедшего события: название метода начинается с префикса On, а название события -с префикса WM_.
virtual BOOL OnCommand (WPARAM wParam, LPARAM IParam);
Метод вызывается при выборе пользователем элемента меню, при отправлении дочерним элементом управления уведомительного сообщения или при нажатии ключевой комбинации клавиш.
Метод возвращает ненулевое значение, если приложение обработало данное сообщение.
Параметры:
wParam - младшие разряды параметра wParam определяют ID команды элемента меню или элемента управления. Если сообщение инициировано элементом управления, то старшие разряды указывают уведомительное сообщение; если сообщение инициировано ключевой комбинацией клавиш, то 1;| если сообщение поступило от элемента меню, то 0.
IParam - если сообщение инициировано элементом управления, то данный параметр идентифицирует его, в противном случае - 0.
Метод OnCommand просматривает таблицу сообщений элемента управления и вызывает соответствующий метод.
afc_msg void OnActivate (UINT nState, CWnd* pWndOther, BOOL bMinimized);
Метод вызывается в том случае, если оконный объект активизируется или деактивизируется.
Параметры:
nState - флажок, определяющий, в какое состояние переходит оконный объект CWnd. Это может быть одно из следующих значений:
WAJNACTTVE WA_ACTIVE
WA_CLICKACTTVE
pWndOther - указатель оконного объекта CWnd. (Значение может быть равно NULL.)
Если окно активизируется щелчком мыши, то для него также вызывается метод OnMouseActivate. afx_msg void OnActivateApp (BOOL bActive, HTASK hTask);
Этот метод вызывается для всех окон верхнего уровня при активизации или деактивизации приложения. afx_msg void OnChildActivate ();
Метод вызывается при использовании MDI-интерфейса для дочерних окон, когда происходит щелчок мышью на заголовке окна или когда окно активизируется, перемещается или изменяет размер.
afx_msg void OnCIose {);
Метод вызывается, чтобы информировать окно о необходимости завершения работы и при выходе из приложения. По умолчанию происходит вызов метода DestroyWindow. afx_msg int OnCreate (LPCREATESTRUCT ipCreateStruct);
Метод вызывается при создании Windows-окна методами Create или CreateEx. Для успешного продолжения создания окна метод должен вернуть значение 0; если возвращаемое значение равно -1, то окно будет разрушено.
Параметры: