- •3 Базовые классы библиотеки mfc
- •Класс cObject
- •Методы и переменные класса cObject
- •Класс cWinApp
- •IpszResourceName - указатель на строку, содержащую имя ресурса пиктограммы. (Тип параметра также может быть cString.) nIdResource - id ресурса пиктограммы.
- •Методы - обработчики сообщений
- •Класс cWnd
- •Методы инициализации
- •Методы управления состоянием окна
- •Управление размером и положением окна
- •Методы управления доступом
- •Методы обновления и перерисовки окна
- •IpRectUpdate - структура rect, определяющая координаты обновляемой прямоугольной области. Данный параметр игнорируется, если prgnUpdate содержит ненулевой указатель области.
- •Методы преобразования координат
- •Методы работы с текстом окна
- •Методы управления линейкой прокрутки
- •Методы управления курсором ввода
- •Методы управления элементами диалогового окна
- •IpString - указатель на буфер, содержащий выбранную строку списка.
- •IpStr - указатель на буфер, в который заносится текст или заголовок элемента управления.
- •Методы работы с меню
- •Методы управления таймером
- •Предупреждающие методы
- •Методы управления сообщениями
- •Переопределяемые методы
- •Методы, вызываемые для обработки сообщений
- •IpCreateStruct - структура createstruct, содержащая информацию о создаваемом объекте cWnd.
- •Класс cFile
- •Члены класса
- •IpszFileName - строка, указывающая в кодировке Windows абсолютный или относительный путь к имени файла. Не может содержать сетевого имени.
Методы преобразования координат
void MapWindowPoints (CWnd* pwndTo, LPRECT IpRect) const;
void MapWindowPoints (CWnd* pwndTo, LPPOINT ipPoint,
UINT nCount) const;
Метод преобразовывает множество точек из координат данного окна CWnd в координаты окна pwndTo.
Параметры:
pwndTo - указатель окна, относительно которого будут преобразованы координаты указанной области. При значении NULL координаты будут указаны относительно экрана.
IpRect - прямоугольная область, чьи координаты преобразовываются. IpPoint - указатель на массив структур POINT, содержащий множество точек, чьи координаты преобразовываются. nCount - количество структур POINT, составляющих массив точек.
void ClientToScreen (LPPOINT ipPoint) const; void ClientToScreen (LPRECT lpRect) const;
Метод преобразовывает клиентские координаты точки или области в экранные координаты.
void ScreenToClient (LPPOINT IpPoint) const; void ScreenToClient (LPRECT ipRect) const;
Метод преобразовывает экранные координаты точки или области в клиентские координаты (координаты, указанные относительно клиентской области данного окна).
Методы работы с текстом окна
void SetWindowText (LPCTSTR IpszString);
Метод устанавливает текст, указанный параметром, как новый заголовок окна, а для элемента управления - текст элемента.
Параметры:
IpszString - объект CString или строка символов, ограниченная 0-символом. Этот метод инициирует для окна сообщение WMJSETTEXT.
int GetWindowText (LPTSTR ipszStringBuf, int nMaxCount) const; void GetWindowText (CString* rString) const;
Метод возвращает количество байт копируемой строки (без учета 0-символа) или нуля, если заголовка нет или он пуст. Копируемой строкой является или заголовок окна, или, для элемента управления, текст этого элемента управления.
Параметры:
IpszStringBuf- буфер, в который записывается копируемая строка. nMaxCount - максимальное число копируемых символов. rString - строка CString, в которую копируется заголовок окна (или текст элемента управления).
Этот метод инициирует для окна CWnd сообщение WM_GETTEXT. int GetWindowTextLength () const;
Метод возвращает длину строки текста (заголовка или текста элемента управления) данного окна. Если текста нет, то метод возвращает значение 0.
Этот метод инициирует для окна CWnd сообщение WM_GETTEXTLENGTH.
void SetFont (CFont* pFont, BOOL bRedraw = TRUE);
Метод устанавливает для данного окна текущий шрифт. Параметры: pFont - новый шрифт.
bRedraw - при значении TRUE данный оконный объект CWnd будет перерисован.
CFont* GetFont () const;
Метод определяет текущий шрифт и возвращает указатель (временный) на объект CFont.
Методы управления линейкой прокрутки
int GetScrollPos (int nBar) const;
При успешном выполнении метод возвращает текущую позицию маркера прокрутки (scroll box), и 0 - в противном случае. Значение, соответствующее текущей позиции, зависит от диапазона линейки прокрутки. Диапазон определяет минимальное и максимальное значение, допустимое для конкретной линейки прокрутки.
Параметры:
пВаr - флажок, определяющий конкретную линейку прокрутки. Он может принимать одно из следующих значений: SB_HORZ, SB_VERT.
void GetScrollRange (int nBar, LPINT IpMinPos, LPINT ipMaxPos) const;
Метод возвращает в переменных IpMinPos и IpMaxPos минимальное и максимальное значение диапазона указанной линейки прокрутки. Если данное окно CWnd не имеет линейки прокрутки, то метод возвращает значения, равные нулю.
По умолчанию диапазон линейки прокрутки окна равен 0-100, а диапазон линейки прокрутки элемента управления - 0-0 (т. е. линейка прокрутки отсутствует).
void ScrollWindow (int xAmount, int yAmount, LPCRECT IpRect - NULL, LPCRECT ipClipRect = NULL);
Метод выполняет прокрутку содержимого клиентской области окна.
Параметры:
xAmount - указывает размер прокрутки по горизонтали. Прокрутка влево Указывается отрицательным значением.
yAmount - указывает размер прокрутки по вертикали. Прокрутка вверх указывается отрицательным значением.
IpRect - указатель объекта CRect или структура RECT, определяющие часть клиентской области окна, которая будет прокручена. Если данный параметр равен NULL, то будет прокручена вся клиентская область окна. lPClipRect - указатель объекта CRect или структура RECT, определяющие Прямоугольник, в котором выполняется прокрутка. Будут прокручены только биты, расположенные внутри данного прямоугольника, а остальные биты вне зависимости от значения lpRect останутся на месте. Если данный параметр равен NULL, то прямоугольник прокрутки отсутствует.
Если в прокручиваемой области окна находится курсор вставки (caret), то он вначале автоматически скрывается, а затем восстанавливается в том же месте окна.
Отметим, что метод ScrollWindow не выполняет автоматической перерисовки открываемой области. Эта область только добавляется к обновляемая области (update region) объекта CWnd, а приложение получает сообщение WM_PAINT. Для того чтобы непосредственно выполнить перерисовку открываемой области, следует сразу после выполнения метода ScrollWindow вызвать метод UpdateWindow.
int ScrollWindowEx (int dx, int dy, LPCRECT ipRectScroll, LPCRECM ipRectClip, CRgn* prgnUpdate, LPRECT ipRectUpdate, UINT flags);
Метод выполняет прокрутку содержимого клиентской области окна.
При успешном выполнении метод возвращает одно из следующих значений: SIMPLEREGION (для прямоугольной поврежденной области), COMPLEXREGION (для непрямоугольной поврежденной области), NULLREGION (при отсутствии поврежденной области) и ERROR - в противном случае.
Параметр flags может принимать следующие значения: SW_ERASE (окну посылается сообщение WM_ERASEBKGND), SWJNVALIDATE (устанавливает после прокрутки область, указанную параметром prgnUpdate поврежденной), SW_SCROLLCHILDREN (всем дочерним окнам посылаем ся сообщение WM_MOVE).
BOOL GetScroIlInfo (int nBar, LPSCROLLINFO ipScmlllnfo, UINT nMask = SIF_ALL);
При успешном выполнении метод возвращает значение TRUE и заносит в структуру LPSCROLLINFO информацию о линейке прокрутки. int GetScrollLirait (int nBar);
При успешном выполнении метод возвращает максимальное значении диапазона линейки прокрутки, и 0 - в противном случае.
BOOL SetScrollInfo (int nBar, LPSCROLLINFO ipScrollInfo, BOOL bRedraw = TRUE);
Метод устанавливает значения для линейки прокрутки и при успешное завершении возвращает значение TRUE.
int SetScrollPos (int nBar, int nPos, BOOL bRedraw = TRUE);
Метод устанавливает новое значение текущей позиции маркера прокрутки и возвращает предыдущее значение.
void SetScrollRange (int nBar, int nMinPos, int nMaxPos, BOOL bRedraw = TRUE);
Метод устанавливает новые границы диапазона линейки прокрутки.
Отметим, что указываемый размер диапазона не может превышать значения INT_MAX: void ShowScrollBar (UINT nBar, BOOL bShow = TRUE);
Метод выполняет отображение или скрытие указанной линейки прокрутки.
Параметр nBar может принимать одно из следующих значений: SB_BOTH> SBJHORZ, SB_VERT. void EnableScrollBarCtrl (int nBar, BOOL bEnable = TRUE);
Метод разрешает или запрещает использование линейки прокрутки.