Стили окна

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

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;