ALTE DOCUMENTE
|
|||||||
Как Вы, вероятно, знаете, одной из основных целей Windows яв 828x231i 83;яется обеспечение полного управления пользовательским интерфейсом. Поэтому операционная система располагает богатыми и разнообразными возможностями работы с текстом, которые Вы можете использовать. Главной из них является поддержка множества разнообразных шрифтов. Программируя в Windows, Вы можете не только использовать встроенные шрифты, но и создавать собственные. Следующие разделы посвящены обсуждению этих возможностей и их реализации.
GetStockObject()
ANSI_FIXED_FONT | ||
ANSI_VAR_FONT | ||
DEVICE_DEFAULT_FONT | ||
DEFAULT_GUI_FONT | ||
OEM_FIXED_FONT |
OEM-шрифт |
|
SYSTEM_FONT |
Системный шрифт Windows |
|
SYSTEM_FIXED_FONT |
Шрифт, использовавшийся как системный в ранних версиях Windows |
используются в Windows для отображения меню и диалогов. В ранних версиях Windows использовался системный шрифт с постоянным размером символов. Во всех современных версиях, начиная с Windows 95, используются пропорциональные шрифты.
HFONT GetStockObject() SelectObject() SelectObject()
. Следующий пример демонстрирует процедуру переключения шрифтов. В нем вводится новый пункт меню Шрифт. Каждый раз при выборе этой команды меню программа переключается между системным шрифтом по умолчанию и ANSI-пропорциональным шрифтом.
#include <Windows.h>
#include <String.h>
#include <Stdio.h>
#include "Text.h"
LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);
char szWinName[] = " "; //
char str[255]; // Буфер строки вывода
int X=0, Y=0; // Текущие координаты строки
int maxX, maxY; // Размеры экрана
HDC memdc; // DC виртуального окна
HBITMAP hbit; // Растр - это виртуальное окно
HBRUSH hbrush; // Дескриптор кисти
HFONT holdf, hnewf; // Дескрипторы шрифтов
int WINAPI WinMain (HINSTANCE hThisInst,
HINSTANCE hPrevInst,
LPSTR lpszArgs,
int nWinMode)
return msg.wParam;
}
// Windows и получает в качестве параметров сообщения
LRESULT CALLBACK WindowFunc HWND hwnd
UINT message,
WPARAM wParam,
LPARAM lParam)
else //
break;
case ID_RESET:
X=Y=0; // Стереть перерисовкой фона
PatBlt(memdc,0,0,maxX,maxY,PATCOPY);
InvalidateRect(hwnd,NULL,1); //
break;
case ID_HELP:
MessageBox(hwnd,"F2: \n"
"F3: сменить шрифт\n"
"F4: с начала экрана",
" ",MB_OK);
break;
}
break;
case WM_PAINT: //
hdc=BeginPaint(hwnd,&paintstruct); // DC
// Теперь копируем растр из памяти на экран
BitBlt(hdc,0,0,maxX,maxY,memdc,0,0,SRCCOPY);
EndPaint(hwnd,&paintstruct); // DC
break;
case WM_DESTROY: // Завершение программы
DeleteDC(memdc); // Удалить виртуальное окно
PostQuitMessage(0);
break;
default:
// Все сообщения, не обрабатываемые в данной
// функции, направляются на обработку по
// умолчанию
return DefWindowProc(hwnd,message,
wParam,lParam);
return 0;
}
#include <Windows.h>
#include "Text.h"
MYMENU MENU
MYMENU ACCELERATORS
И, наконец, добавьте еще одну строку в файл Text.h:
#define ID_SHOW 100
#define ID_RESET 101
#define ID_FONT 102
#define ID_HELP 103
TRANSPARENT
|