При создании окна, в конструкторе будущего окна мы делаем примерно следующее:
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;
Материал прислал Dmitry (astra@mail.iks.ru).