Классы стандартных элементов управления. Статические элементы управления
Генеалогия
Описательства и украшательства...
В случаях, когда требуется вывести текст (например, заголовок другого
элемента управления или поясняющий текст) или добавить какие-либо дополнительные
рисованные элементы в блоке диалога, как правило, используются статические
элементы управления.
Класс CStatic позволяет выводить на экран текстовые строки, различные
закрашенные прямоугольники, значки, курсоры, битовые массивы (картинки) и
расширенные метафайлы. Часто они используются для объединения или разделения
других элементов управления.
Создание
CStatic( ); // Конструктор по умолчанию BOOL Create( LPCTSTR lpszText, DWORD dwStyle, Const RECT& rect, CWnd* pParentWnd, UINT nID = 0xFFFF ); // Функция создает статический элемент управления и присоединяет его к // объекту класса. Возвращает истину в случае удачного создания. // Параметры: // lpszText - задает текст, который должен быть помещен на элемент // управления. Если параметр равен NULL, то текст выводится не будет.
// dwStyle - задает стиль статического элемента. Параметр может содержать // комбинацию стилей, связанных операцией OR (|). Необходимо всегда // указывать стиль WS_CHILD, т. к. элементы управления не могут быть // окнами верхнего уровня. Для того чтобы элемент управления был видимым, // сразу после отображения его родительского окна необходимо указать стиль // WS_VISIBLE. Если нужно, чтобы созданный элемент управления был // недоступен для использования, то можно указать стиль WS_DISABLE.
// Кроме того, необходимо использовать следующие стили (некоторые можно // комбинировать с помощью побитового или "|"): // SS_BLACKFRAME - задает прямоугольник с рамкой того же цвета, что и // рамка окна (по умолчанию черный цвет).
// SS_CENTER - определяет прямоугольник и выводит заданный текст в его // центре; текст форматируется до того, как он будет выведен на экран; // слова, не помещающиеся на одной строке, автоматически переносятся на // следующую, что, однако, не гарантирует отображения всего текста.
// SS_GRAYFRAME - задает прямоугольник с рамкой того же цвета, что и цвет // фона клиентской области родительского окна (для блоков диалога этот // цвет по умолчанию серый). // SS_ICON - задает значок для его отображения в родительском окне; // передаваемый текст (параметр lpszText) является именем значка (но не // именем файла !!!), определяемого в файле ресурсов; размеры элемента // управления при этом игнорируются - их определяют размеры значка. // SS_LEFT - определяет прямоугольник и выводит текст, выровненный по // левому краю; текст форматируется до того, как он будет выведен на // экран; слова, не помещающиеся на одной строке, автоматически // переносятся на следующую, что, однако, не гарантирует отображения // всего текста. // SS_LEFTNOWORDWRAP - определяет прямоугольник и выводит текст, // выровненный по левому краю; символы табуляции заменяются пробелами, // но слова автоматически не переносятся на новую строку. В качестве // символа переноса используются символы "\n"; текст, не помещающийся // в строке, обрезается. // SS_NOPREFIX - если этот стиль не определен, то Windows интерпретирует // символ амперсанда (&) в тексте элемента управления, как префикс // символа-акселератора; в этом случае символ "&" удаляется, а следующий // за ним символ подчеркивается. Если данный стиль установлен, то символ // "&" остается в тексте.
// SS_RIGHT - определяет прямоугольник и выводит текст, выровненный по // правому краю; текст форматируется до того, как он будет выведен на // экран; слова, не помещающиеся на одной строке, автоматически // переносятся на следующую, что, однако, не гарантирует отображения // всего текста. // SS_SIMPLE - задает прямоугольник и выводит строку текста, выровненного // по левому краю; строка текста не может быть укорочена или изменена. // SS_USERITEM - статический элемент управления, определяемый // пользователем. // SS_WHITEFRAME - задает прямоугольник с рамкой, которая по умолчанию // имеет белый цвет. // SS_WHITERECT - задает закрашенный прямоугольник (по умолчанию белого // цвета). // Если необходимо вывести на экран битовый массив, значок курсор или // метафайл, то нужно использовать следующие стили: // SS_BITMAP - стиль для битовых массивов // SS_ICON - стиль для курсоров и значков // SS_ENHMETAFILE - стиль для расширенных метафайлов // Для курсоров, битовых массивов или значков можно использовать стиль // SS_CENTERIMAGE - располагает изображение в центре статического // элемента управления
// rect - задает положение и размер статического элемента управления.
// pParentWnd - задает родительское окно объекта CStatic, обычно это // объект класса CDialog. Этот параметр обязательно должен быть // определен (не может быть NULL).
// nID - задает идентификатор статического элемента управления.
Отображение битового массива
HBITMAP GetBitmap( ); // Возвращает дескриптор битового массива, ранее установленного с // помощью функции SetBitmap, в случае отсутствия связанного битового // массива с элементом управления или в случае ошибки возвращается NULL. HBITMAP SetBitmap( HBITMAP hBitmap ); // Задает дескриптор битового массива (параметр hBitmap) для его вывода // в рамках статического элемента управления. // Функция возвращает дескриптор предыдущего битового массива, связанного // со статическим элементом управления, или NULL, если массива не было.
Битовый массив будет автоматически выведен в границах элемента управления. По
умолчанию, левые верхние углы будут совпадать, а размер элемента управления
будет изменен в ссответствии с размером изображения. Для элемента, отображающего
битовый массив можно использовать следующие стили:
SS_BITMAP - всегда используется, когда выводится битовый массив. SS_CENTERIMAGE - для центрирования изображения в рамках элемента управления; если изображение больше элемента управления, то оно будет обрезано; если наоборот, то оставшееся место вокруг изображения будет заполнено цветом верхнего левого пикселя битового массива.
Отображение значка
HICON GetIcon( ); // Возвращает дескриптор значка, ранее установленного с помощью функции // SetIcon или NULL. HICON SetIcon( HICON hIcon ); // Задает дескриптор значка (параметр hIcon) для его вывода в рамках // статического элемента управления. // Функция возвращает дескриптор предыдущего значка, связанного со // статическим элементом управления, или NULL, если значка не было.
Размер элемента управления будет изменен в ссответствии с размером значка.
Для элемента, отображающего значок можно использовать следующие стили:
SS_ICON - всегда используется, когда выводится значок или курсор. SS_CENTERIMAGE - для центрирования изображения в рамках элемента управления; если изображение больше элемента управления, то оно будет обрезано; если наоборот, то оставшееся место вокруг изображения будет заполнено цветом фона статического элемента управления.
Отображение курсора
HCURSOR GetCursor( ); // Возвращает дескриптор курсора, ранее установленного с помощью функции // SetCursor или NULL, если курсор не был установлен. HCURSOR SetCursor( HCURSOR hCursor ); // Задает дескриптор курсора (параметр hCursor) для его вывода в рамках // статического элемента управления. // Функция возвращает дескриптор предыдущего курсора, связанного со // статическим элементом управления, или NULL в противном случае.
Действия по размещению курсора, задаваемые параметры и т. д. полностью
аналогичны отображению значка.
Отображение расширенных метафайлов
HENHMETAFILE GetEnhMetaFile( ); // Возвращает дескриптор расширенного метафайла, ранее установленного // с помощью функции SetCursor или NULL, если расширенный метафайл не // был установлен. HENHMETAFILE SetEnhMetaFile( HENHMETAFILE hMetaFile ); // Задает дескриптор расширенного метафайла (параметр hMetaFile) для // его вывода в рамках статического элемента управления. // Функция возвращает дескриптор предыдущего расширенного метафайла, // связанного со статическим элементом управления, или NULL в // противном случае.
Для элемента, отображающего метафайл, наряду с использованием стилей окон и
статических элементов управления необходимо использовать следующий стиль:
SS_ENHMETAFILE - всегда используется при выводе расширенных метафайлов.