Операционная система Windows 95 для программиста


Описание функций - часть 2


Функция WndProc_OnCommand обрабатывает сообщение WM_COMMAND, поступающее от главного меню приложения. Рассмотрим процедуры обработки сообщений для каждой строки меню. Название строки мы будем отделять от названия меню символом "/".

  • Format/Bold

Когда пользователь выделяет текст и выбирает из меню Format строку Bold, выделенный текст будет оформлен жирным шрифтом. Если же выбрать эту строку без предварительного выделения текста, указанное оформление получат символы, введенные после выполнения этой операции.

После повторного выбора строки оформление жирным шрифтом отменяется.

Соответствующий обработчик вначале определяет текущее оформление символов, посылая окну органа управления сообщение EM_GETCHARFORMAT :

cf.cbSize = sizeof(cf); SendMessage(hwndEdit, EM_GETCHARFORMAT, TRUE, (LPARAM)&cf);

Ниже приведены параметры этого сообщения:

wParam = (WPARAM)(BOOL)fSelection; lParam = (LPARAM)(CHARFORMAT FAR *)lpFmt;

Параметр fSelection может принимать значения TRUE или FALSE. В первом случае будет определено оформление символов, принятое по умолчанию, во втором - оформление для выделенного текста.

Параметр lpFmt должен содержать указатель на структуру типа CHARFORMAT , в которую будут записаны атрибуты форматирования. Эта структура имеет следующий формат:

typedef struct _charformat { UINT cbSize; // размер структуры в байтах _WPAD _wPad1; // зарезервировано DWORD dwMask; // маски полей атрибутов DWORD dwEffects;// эффекты, использованные при оформлении LONG yHeight; // высота символов LONG yOffset; // смещение от базовой линии COLORREF crTextColor; // цвет текста BYTE bCharSet; // набор символов BYTE bPitchAndFamily; // семейство шрифтов TCHAR szFaceName[LF_FACESIZE]; // название шрифта _WPAD _wPad2; // зарезервировано } CHARFORMAT;

Перед использованием структуры CHARFORMAT в поле cbSize следует записать размер структуры, как мы это сделали в приведенном выше примере.

Если структура CHARFORMAT используется для установки формата, в поле dwMask следует записать маски, соответствующие устанавливаемым атрибутам оформления (сведения об этих атрибутах будут записаны в поле dwEffects, рассмотренное ниже, и в другие поля структуры CHARFORMAT).




Начало  Назад  Вперед



Книжный магазин