Visual C++ MFC в подробностях
Страница 36. Стили окна



Стили окна

При создании окна, в конструкторе будущего окна мы делаем примерно следующее:

CMainWin::CMainWin( )
{
Create(NULL, "My Programm", WS_OVERLAPPEDWINDOW);
}

Что же такое это WS_ ?

На самом деле за приставкой WS_ скрывается стиль будущего окна. Ниже идет набор стилей. При задании набора стилей нужно использовать оператор побитового сложения OR ( | );

  • WS_BORDER - Создание окна с рамкой.
  • WS_CAPTION - Создание окна с заголовком (невозможно использовать одновременно со стилем WS_DLGFRAME).
  • WS_CHILD
    WS_CHILDWINDOW
    - Создание дочернего окна (невозможно использовать одновременно со стилем WS_POPUP).
  • WS_CLIPCHILDREN - Исключает область, занятую дочерним окном, при выводе в родительское окно.
  • WS_CLIPSIBLINGS - Используется совместно со стилем WS_CHILD для отрисовки в дочернем окне областей клипа, перекрываемых другими окнами.
  • WS_DISABLED - Создает окно, которое недоступно.
  • WS_DLGFRAME - Создает окно с двойной рамкой, без заголовка.
  • WS_GROUP - Позволяет объединять элементы управления в группы.
  • WS_HSCROLL - Создает окно с горизонтальной полосой прокрутки.
  • WS_MAXIMIZE - Создает окно максимального размера.
  • WS_MAXIMIZEBOX - Создает окно с кнопкой развертывания окна.
  • WS_MINIMIZE
    WS_ICONIC
    - Создает первоначально свернутое окно (используется только со стилем WS_OWERLAPPED).
  • WS_MINIMIZEBOX - Создает окно с кнопкой свертывания.
  • WS_OVERLAPPED - Создает перекрывающееся окно (которое, как правило, имеет заголовок и WS_TILED рамку).
  • WS_OVERLAPPEDWINDOW - Создает перекрывающееся окно, имеющее стили WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX, WS_MAXIMIZEBOX.
  • WS_POPUP - Создает popup-окно (невозможно использовать совместно со стилем WS_CHILD.
  • WS_POPUPWINDOW - Создает popup-окно, имеющее стили WS_BORDER, WS_POPUP, WS_SYSMENU.
  • WS_SYSMENU - Создает окно с кнопкой системного меню (можно использовать только с окнами имеющими строку заголовка).
  • WS_TABSTOP - Определяет элементы управления, переход к которым может быть выполнен по клавише TAB.
  • WS_THICKFRAME - Создает окно с рамкой, используемой для изменения
  • WS_SIZEBOX - размера окна.
  • WS_VISIBLE - Создает первоначально неотображаемое окно.
  • WS_VSCROLL - Создает окно с вертикальной полосой прокрутки.

Ниже идет программа реализующая окно Windows. При помощи неё поэкспериментируйте со стилями, названными выше.

// My.h
class CMainWin : public CFrameWnd// Класс создания окна
{
public:
CMainWin();// Конструктор
DECLARE_MESSAGE_MAP()// Объявление очереди сообщений
};

class CMainApp : public CWinApp// Класс создания приложения
{
public:
BOOL InitInstance();// Точка начала работы приложения
};

// My.cpp
#include <afxwin.h>// Подключение библиотеки MFC
#include "skelet.h"// Содержит определения классов

CMainWin::CMainWin()// Реализация конструктора
{
CRect r;// Отвечает за размер и позицию окна
r.top = r.left = 10;// Расположение окна на экране (сверху и слева)
r.bottom = r.right = 200;// Размеры окна

Create(NULL, "Скелет окна", WS_OVERLAPPEDWINDOW, r);// Создание окна
}

BOOL CMainApp::InitInstance()// Вместо функции WinMain() (Только для MFC)
{
m_pMainWnd = new CMainWin;// Создание объекта окна
m_pMainWnd -> ShowWindow(m_nCmdShow);// Вывод окна
m_pMainWnd -> UpdateWindow();// Обновление окна

return TRUE;// TRUE, если окно создано
}

// Реализация очереди сообщений. (пока она пустая)
BEGIN_MESSAGE_MAP(CMainWin, CFrameWnd)

END_MESSAGE_MAP()

// Создание экземпляра приложения
CMainApp App;
 
 
« Предыдущая статья   Следующая статья »