Отправляет email-рассылки с помощью сервиса Sendsay

Статьи по Visual C++

  Все выпуски  

Шрифты


Visual C++
Лучшие статьи с сайта www.p-lib.pp.ru
  Главная | Новости | Статьи | Каталог | Софт | Регистрация | Поиск

Новые статьи на сайте

1. Поиск и сортировка записей
В статье описаны функции поиска и сортировки в элементе управления ListCtrl.

2. Меню и акселераторы
В этой статье я вас ознакомлю с классом CMenu. С помощью этого класса можно создавать меню в MFC приложениях. Так же будет рассмотрен вопрос об использовании акселераторов.

3. Разделяемая память в динамической библиотеке
В этой статье рассмотрен вопрос о разделяемой памяти в динамической библиотеке. Также приведенные примеры демонстрируют примеры использования общей памяти.

4. Битовые образы
В операционной системе Windows рассматриваются два типа растровых изображений: аппаратно-зависимые и аппаратно-независимые. В этой статье рассматриваются аппаратно-зависимые изображения и их поддержку в библиотеке MFC.

5. Как в Edit-Control поместить каретку после текста
Чтобы поместить выделенный кусок текста в edit control, можно использовать сообщение EM_SETSEL. Если начальная и конечная позиции выделенного текста совпадают, то каретка просто помещается в эту позицию.

6. Как разрешить меню для Edit Control
В CDialog или другом окне, которое не имеет меню edit для вырезания (cutting), копирования (copying), и вставки (pasting), контролы CEdit обрабатывают эти функции через обычные Windows акселераторы. Однако в стандартном приложении MDI или SDI эти опции запрещены. Как же исправить эту ситуацию?

7. Как программно добавить текст в Edit Control
В основном, приложения Windows используютс элемент управления редактирования для отображения текста. Иногда, приложению требуется добавить текст в конец окна редактирования вместо того, чтобы заменить весь текст. Существует два способа сделать это в Windows.

8. Иконка на кнопке
Забавная штука, получается, очень симпатично выглядит кнопка с рисунком, но стоит добавить манифест к файлу, как сразу эти кнопки отображаются обычными. В этой статье приводится функция, которая и загоняет в кнопку иконку.

9. Как закрасить диалог цветом
В статье приводится пример закрашивания диалога цветом. Этот пример хорошь тем, что можно использовать любой, даже не стандартный способ вызова диалога.

10. SHFormatDrive - открывает стандартный диалог форматирования диска
Функция SHFormatDrive открывает стандартное диалоговое окно форматирования диска. В статье приводится пример реализации этой функции.

Свежие компьютерные новости

28.02.2006 Microsoft готовит портативное устройство Origami

28.02.2006 Квантовый компьютер работает даже выключенным

28.02.2006 Вышла обновлённая бета-версия Windows Vista

28.02.2006 Новый имитатор ускорит разработку ПО

28.02.2006 Кадр дня: Концептуальный компьютер Asus Green PC

28.02.2006 NTT DoCoMo поставила рекорд скорости передачи данных в сетях 4G

28.02.2006 Pretec и Sandisk представили сверхбыстрые флэш-карты

27.02.2006 Серверные процессоры Intel станут использовать LGA

Шрифты

Начнем с простого вывода текстовой строки на экран. Наверняка вы уже знаете, что вывод информации в окно лучше производить по получении сообщения WM_PAINT. В нашем примере этому сообщению соответствует функция OnPaint. Функция API BeginPaint соответствует одноименный метод класса CDialog, аналогично можно сказать и про функцию EndPaint. Метод BeginPaint создает объект класса CDC, определяющего возможности библиотеки MFC для манипулирования контекстом устройства. Вот новое содержимое функции OnPaint.

void CDialogDlg::OnPaint() 
{
 PAINTSTRUCT pn;
 //указываем на объект типа CDC
 CDC* pDC;
 //создаем объект CDC
 pDC = CDialogDlg::BeginPaint(&pn);
 //определяем строку для вывода
 CString s = "Привет! Привет!";
 //вывод строки
 pDC->TextOut(10, 10, s);
 //закрываем контекст
 CDialogDlg::BeginPaint(&pn);
}

Мы нарочно пишем CdialogDlg::BeginPaint вместо просто BeginPaint, дабы подчеркнуть, что это метод класса CDialog.

Рассмотрим вопрос выбора и создания собственных шрифтов. Ниже приведена функция OnPaint, в которой создается новый шрифт.

void CDialogDlg::OnPaint() 
{
 PAINTSTRUCT pn;
 LOGFONT lg;
 lg.lfHeight = 18;//высота шрифта
 lg.lfWidth = 12;//ширина по умолчанию
 lg.lfEscapement = 900;//угол(90 градусов)
 lg.lfOrientation = 0;//0
 lg.lfWeight = FW_BLACK;//толщина шрифта
 lg.lfItalic = 0;//курсив
 lg.lfUnderline = 0;//подчеркивание
 lg.lfStrikeOut = 0;//перечеркивание шрифта
 lg.lfCharSet = ANSI_CHARSET;//множество символов шрифта
 lg.lfOutPrecision = OUT_DEFAULT_PRECIS;//флаг точности
 lg.lfClipPrecision = CLIP_DEFAULT_PRECIS;//флаг точности прилегания шрифта
 lg.lfQuality = PROOF_QUALITY;//флаг качества
 lg.lfPitchAndFamily = VARIABLE_PITCH | FF_ROMAN;//тип и семейство шрифта
 strcpy(lg.lfFaceName, "Courier");//название шрифта
 CFont font;
 //создать шрифт
 font.CreateFontIndirect(&lg);
 //указываем на объект типа CDC
 CDC* pDC;
 //создаем объект CDC
 pDC = CDialogDlg::BeginPaint(&pn);
 //выбрать шрифт в контексте устройства
 CFont* old = (CFont*)pDC->SelectObject(&font);
 //определяем строку для вывода
 CString s = "Это новый шрифт";
 pDC->SetBkColor(RGB(210,210,210));
 //вывод строки
 pDC->TextOut(200, 200, s);
 //закрываем контекст
 CDialogDlg::BeginPaint(&pn);
}

Вот описание полей структуры LOGFONT.

LfHeight - определяет высоту шрифта в логических единицах; если 0, то высота берется по умолчанию.
LfWidth - определяет ширину шрифта в логических единицах; если 0, то ширина берется по умолчанию.
LfEscapement - угол наклона текста в десятых долях градуса по отношению к горизонтальной оси в направлении против часовой стрелки.
LfOrientatuin - то же, что и предыдущий параметр, но по отношению к отдельному символу (игнорируется в Windows 9x).
LfWeight - задает жирность шрифта (0-900).
LfItalic - если 1, ко курсив.
LfUnderline - если 1, то символы подчеркнуты.
LfStrikeOut - если 1, то символы перечеркнуты.
LfcharSet - задает множество символов шрифта, обычно определяется константой ANSI_CHARSET (=0).
LfOutPrecision - флаг точности шрифта; определяет, насколько точно созданный шрифт отвечает заданным параметрам. Возможные значения:

  1. OUT_DEFAULT_PRECIS= 0
  2. OUT_STRING_PRECIS= 1
  3. OUT_CHARACTER_PRECIS= 2
  4. OUT_STROKE_PRECIS= 3
  5. OUT_TT_PRECIS=4
  6. OUT_DEVICE_PRECIS=5
  7. OUT_RASTER_PRECIS= 6
  8. OUT_TT_ONLY_PRECIS= 7
  9. OUT_OUTLINE_PRECIS=8
  10. OUT_SCREEN_OUTLINE_PRECIS=9

LfClipPrecision - флаг точности прилегания шрифта; определяет, как будут отсекаться части шрифта, не попадающие в видимую область. Возможные значения:

  1. CLIP_DEFAULT_PRECIS= 0
  2. CLIP_CHARACTER_PRECIS= 1
  3. CLIP_STROKE_PRECIS= 2
  4. CLIP_MASK= 0fH
  5. CLIP_LH_ANGLES= (1 SHL 4)
  6. CLIP_TT_ALWAYS= (2 SHL 4)
  7. CLIP_EMBEDDED= (8 SHL 4)

LfQuality - флаг качества шрифта; определяет соответствие логического шрифта и шрифта, допустимого данным устройством. Возможные значения:

  1. DEFAULT_QALITY= 0
  2. DRAFT_QALITY= 1
  3. PROOF_QALITY= 2

LfPitchFamily - определяет тип и семейство шрифта. Возможные значения определяются комбинацией (ИЛИ) двух групп констант:

  1. DEFAULT_PITCH= 0
  2. FIXED_PITCH= 1
  3. VARIABLE_PITCH= 2

И

  1. FF_DONTCARE = 0
  2. FF_ROMAN =(1 SHL 4)
  3. FF_SWISS =(2 SHL 4)
  4. FF_MODERN =(3 SHL 4)
  5. FF_SCRIPT =(4 SHL 4)
  6. FF_DECORATIVE =(5 SHL 4)

LfFaceName - содержит название шрифта. Длинная имени не может превосходить 32 символа.

Книги с Озона

Visual C++.NET. Библия пользователя Visual C++.NET. Библия пользователя

Эта книга посвящена библиотеке MFC, a не только платформе .NET. Весь материал разбит на разделы, освещающие отдельные направления разработки, объединенные в логически упорядоченные категории, что позволит новичкам получить систематизированные знания, читая книгу шаг за шагом, а квалифицированный программист легко найдет интересующие разделы. Каждая глава начинается вводным разделом, содержащим краткую информацию по обсуждаемой теме, а затем следует пример довольно простого демонстрационного приложения. Книга предназначена для программистов средней и высокой квалификации.

Заказать на Озоне

Visual C++.NET. Класссика програмирования (+ CD-ROM) Visual C++.NET. Класссика програмирования (+ CD-ROM)

"Visual C++.Net. Классика программирования" - книга, необходимая как начинающему программисту, так и профессионалу, желающему познакомиться с новыми возможностями последней версии наиболее популярной системы программирования. Изучение этой книги не требует глубоких знаний языка C++, однако предполагается знание основ языка С. Поэтапное изучение предмета позволит человеку с любым уровнем начальных знаний о языке программирования C++ легко изучить самую современную его версию. Данная книга - не просто учебник по языку программирования, это первый шаг в создании удобных, профессиональных приложений, ориентированных на Internet.

Заказать на Озоне

Использование Microsoft Visual C++ .NET. Специальное издание Использование Microsoft Visual C++ .NET. Специальное издание

Эта книга фокусирует внимание читателя на использовании языка программирования Visual C++ при создании 32-разрядных Windows-приложений, включая приложения баз данных, Internet-приложения и СОМ-приложения. Помимо этого, здесь содержится описание технологии .NЕТ и способа применения языка Visual C++ при создании .NЕТ-приложений, использующих базы данных, взаимодействующих с Internet и т.д. Особое внимание автор книги уделяет совместному использованию технологий .NЕТ и СОМ. Эта книга будет полезна как начинающим, так и опытным программистам.

Заказать на Озоне

Последнии статьи по Delphi

   -  Новый компонент TTrayIcon в BDS 2006
   -  Оператор перехода (GoTo)
   -  Бегущая строка (Метод III)
   -  Методика модификации программ для скрытия их от антивирусов
   -  Нестандартные заголовки
   -  Создание бегущей строки в Delphi
   -  Введение в реккурсию
   -  Перевод в Delphi-приложениях
   -  Сравнительный анализ технологий CORBA и COM - Часть 3
   -  Сравнительный анализ технологий CORBA и COM - Часть 2

Советую посетить

Портал для Delphi программиста - Быстро развивающийся портал о программирование на языке Pascal/Delphi. Статьи, исходники, компоненты, справочники, мануалы, FaQ, программы.

Дружественные рассылки

Статьи по Visual Basic.NET
Статьи по ASP.NET
Delphi Coding

Замечания и предложения отправляйте на E-Mail указанный ниже. С уважением Ковязин Дмитрий (admin@p-lib.pp.ru).



В избранное