- •3 Базовые классы библиотеки mfc
- •Класс cObject
- •Методы и переменные класса cObject
- •Класс cWinApp
- •IpszResourceName - указатель на строку, содержащую имя ресурса пиктограммы. (Тип параметра также может быть cString.) nIdResource - id ресурса пиктограммы.
- •Методы - обработчики сообщений
- •Класс cWnd
- •Методы инициализации
- •Методы управления состоянием окна
- •Управление размером и положением окна
- •Методы управления доступом
- •Методы обновления и перерисовки окна
- •IpRectUpdate - структура rect, определяющая координаты обновляемой прямоугольной области. Данный параметр игнорируется, если prgnUpdate содержит ненулевой указатель области.
- •Методы преобразования координат
- •Методы работы с текстом окна
- •Методы управления линейкой прокрутки
- •Методы управления курсором ввода
- •Методы управления элементами диалогового окна
- •IpString - указатель на буфер, содержащий выбранную строку списка.
- •IpStr - указатель на буфер, в который заносится текст или заголовок элемента управления.
- •Методы работы с меню
- •Методы управления таймером
- •Предупреждающие методы
- •Методы управления сообщениями
- •Переопределяемые методы
- •Методы, вызываемые для обработки сообщений
- •IpCreateStruct - структура createstruct, содержащая информацию о создаваемом объекте cWnd.
- •Класс cFile
- •Члены класса
- •IpszFileName - строка, указывающая в кодировке Windows абсолютный или относительный путь к имени файла. Не может содержать сетевого имени.
Управление размером и положением окна
BOOL GetWindowPlacement (WINDOWPLACEMENT* Ipwndpt) const;
Метод возвращает информацию о положении окна на экране в структуре WINDOWPLACEMENT. При успешном завершении метод возвращает ненулевое значение.
Структура WINDOWPLACEMENT определяется следующим образом:
typedef struct tagWINDOWPLACEMENT { /* wndpl */
UINT length;
UINT flags;
UINT showCmd;
POINT ptMinPosition;
POINT ptMaxPosition;
RECT rcNormalPosition; } WINDOWPLACEMENT;
Эта структура имеет следующие члены: length - длина структуры в байтах;
flags - флажки, определяющие расположение свернутого окна, и метод, восстанавливающий окно:
WPF_SETMINPOSITION - позволяет указывать х и у координаты положения свернутого окна (в члене структуры ptMinPosition);
WPF_RESTORETOMAXIMIZED - определяет режим изменения состояния окна на развернутое (флажок используется, только если для члена showCmd установлено SW_SHOWMINIMIZED). Для данного метода этот член всегда равен нулю;
showCmd - флажки, определяющие текущее состояние окна:
SW_HIDE;
SW_MINIMIZE;
SW_RESTORE (как SW_SHOWNORMAL);
SW_SHOW;
SW_SHOWMAXIMIZED;
SW_SHOWMINIMIZED;
SW_SHOWMINNOACTIVE;
SW_SHOWNA;
SW_SHOWNOACTIVATE;
SW_SHOWNORMAL (как SW_RESTORE);
ptMinPosition - позиция верхнего левого угла свернутого окна; ptMaxPosition - позиция верхнего левого угла развернутого окна; rcNormalPosition - координаты окна в нормальном состоянии (SW_RESTORE). Отметим, что окно может находиться в одном из трех состояний:
-
нормальном;
-
свернутом в пиктограмму;
-
развернутом до полноэкранного представления.
BOOL SetWindowPlacement (const WINDOWPLACEMENT*//>v»W/>Q;
Метод устанавливает состояние и положение окна, определяя новые значения в структуре WINDOWPLACEMENT. При успешном завершении метод возвращает ненулевое значение.
BOOL Islconic () const;
Метод определяет, находится ли окно в свернутом состоянии, и если да, то возвращает ненулевое значение.
BOOL IsZoomed () const;
Метод определяет, находится ли окно CWnd в развернутом состоянии, и если да, то возвращает ненулевое значение.
void MoveWindow (int x, int у, int nWidth, int nffeight, BOOL bRepaint = TRUE); void MoveWindow (LPCRECT ipRect, BOOL bRepaint = TRUE);
Эти методы изменяют размеры и положение данного окна.
Параметры:
х - новая позиция левой стороны окна CWnd. у - новая позиция верхней стороны окна CWnd. п Width - ширина окна CWnd. nHeight - высота окна CWnd.
bRepaint - флажок, определяющий, следует ли перерисовывать окно: при значении TRUE окно CWnd получает сообщение WM_PAINT, вызывающее выполнение метода обработки сообщения OnPaint. При значении FALSE перерисовки не происходит.
Отметим, что если перерисовка не выполняется, то это касается как клиентской, так и системной области окна.
lpRect - объект CRect или структура RECT, определяющие новое положение и размер окна. Положение объекта верхнего уровня указывается относительно верхнего левого угла экрана, о положение дочерних объектов CWnd - относительно верхнего левого угла клиентской области родительского окна.
Метод MoveWindow посылает сообщение WM_GETMINMAXINFO.
BOOL SetWindowPos (const CWnd* p WndlnsertAfter, int x, int y, int ex, int cy, UINT nFlags);
Метод изменяет порядок следования окна в Z-упорядочении, а также его положение и размеры. При успешном завершении метод возвращает) ненулевое значение.
Параметры:
pWndlnsertAfter - определяет объект CWnd, после которого будет помещен текущий объект CWnd в Z-упорядочении. Данный параметр может быть или указателем на объект CWnd, или указывать одно из следующих значений:
wndBottom , wndTop, wndTopMost, wndNoTopMost.
Окно, указываемое как wndTopMost, сохраняет свою верхнюю позицию и в том случае, если оно становится неактивным окном. Такие окна можно рассматривать как окна, обладающие свойством "располагаться поверх других окон".
х и у- новые координаты верхнего левого угла окна. сх и су - новые ширина и высота окна.
nFlags - набор флажков, определяющих размер и положение окна. Этот параметр может указываться как комбинация следующих значений:
SWP_DRAWFRAME - отображать вокруг окна рамку (определенную при создании окна);
SWP_FRAMECHANGED - посылать окну сообщение WM_NCCALCSIZE в любом случае, включая и ситуацию, когда размер окна не изменяется (по умолчанию сообщение посылается только при изменении размера окна);
SWP_HIDEWINDOW - скрыть окно;
SWP_NOACTIVATE - не делать окно активным. Если этот флажок отсутствует, то данное окно будет сделано активным;
SWP_NOCOPYBITS - разрушать данные клиентской области. Если этот флажок отсутствует, то данные будут сохранены и скопированы обратно в клиентскую область после изменения размера и положения окна;
SWP_NOMOVE - сохранить окно в текущей позиции, игнорируя значения параметров х и у;
SWP_NOOWNERZORDER - не изменять позицию родительского окна в Z-упорядочении;
SWP_NOREDRAW - не выполнять перерисовку измененного окна;
SWP_NOREPOSITION - как SWP_NOOWNERZORDER;
SWP_NOSENDCHANGING - предотвращает получение окном сообщения WM_WINDOWPOSCHANGING;
SWP_NOSIZE - сохранить текущий размер окна, проигнорировав параметры сх и су;
SWPNOZORDER - сохранить текущее положения окна в Z-упорядочении (проигнорировав параметр pWndlnsertAfter).,
SWP_SHOWWINDOW - отобразить окно.
Этот метод позволяет изменять размер, положение и Z-упорядочение для любого окна: дочернего окна, popup-окна или окна верхнего уровня.
Для того чтобы создать окно, расположенное поверх других окон, следует или вызвать данный метод с параметром pWndlnsertAfter, равным &wndTopMost, или установить при создании окна флажок стиля WS_EX_TOPMOST.
UINT ArrangelconicWindows ();
Метод упорядочивает все пиктограммы свернутых дочерних окон и при Успешном завершении возвращает высоту одного ряда пиктограмм.
Для того чтобы упорядочить пиктограммы рабочей области экрана (desktop-окно), следует вначале вызовом метода GetDesktopWindow установить указатель на это окно, а затем вызвать для упорядочивания пиктограмм метод ArrangelconicWindows.
Для упорядочивания пиктограмм дочерних окон MDI-окна следует использовать метод CMDIFrameWnd-MDIIconArrange.
void BringWindowToTop ();
Метод размещает данное окно над стеком перекрывающихся окон. Дополнительно этот метод активизирует popup-окно, окно верхнего уровня и дочерние окна.
void GetWindowRect (LPRECT ipRect) const;
Метод возвращает экранные координаты окна CWnd.
Параметры:
IpRect - указатель объекта CRect или структура RECT, в которые заносятся значения экранных координат окна (размер окна включает строку заголовка и рамку окна).
void GetClientRect (LPRECT IpRect) const;
Метод возвращает координаты клиентской области окна CWnd (относительно самого окна).
Параметры:
IpRect - указатель объекта CRect или структура RECT, в которые заносятся значения координат клиентской области окна. При этом координата верхнего левого угла клиентской области будет равна (0,0) и размер области будет указан заданием ширины и высоты (соответственно в членах right и bottom).