Алекс Jenter - Программирование на Visual C++. Архив рассылки

Тут можно читать онлайн Алекс Jenter - Программирование на Visual C++. Архив рассылки - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование на Visual C++. Архив рассылки
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.33/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Алекс Jenter - Программирование на Visual C++. Архив рассылки краткое содержание

Программирование на Visual C++. Архив рассылки - описание и краткое содержание, автор Алекс Jenter, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.

Программирование на Visual C++. Архив рассылки - читать онлайн бесплатно полную версию (весь текст целиком)

Программирование на Visual C++. Архив рассылки - читать книгу онлайн бесплатно, автор Алекс Jenter
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Для повышения производительности Regex кэширует в памяти все регулярные выражения. Поэтому повторного разбора при каждом очередном использовании не происходит. Такой подход несколько уменьшает разницу в производительности компилируемых и интерпретируемых регулярных выражений.

Приложение RegExpTest

В качестве примера использования регулярных выражений мы создали .Net-приложение, использующее регулярные выражения для поиска в тексте.

Рис2 Приложение RegExpTest Мода великая вещь поэтому писать приложение - фото 26

Рис.2. Приложение RegExpTest

Мода – великая вещь, поэтому писать приложение следует не на Java, не на VB, а на C#. Это модно, и доказывает, что автор не стоит на месте, а работает над собой.

Отрывки кода этого примера приведены в Листинге 1. Само приложение можно скачать с нашего

ftp-сайта.

Листинг 1. Использование регулярных выражений в C#

// Класс для хранения информации о найденном вхождении

protected class MyItem {

public MyItem(string Match, int Index, int Len) {

this.Match = Match;

this.Index = Index;

this.Len = Len;

}

public override string ToString() {

return Index.ToString() + ", " + Len.ToString() + ", " + Match;

}

public string Match;

public int Index;

public int Len;

}

protected void Parce() {

int iCountMatchs = 0;

try {

// Очищаем лист-бокс

listBox1.Items.Clear();

statusBar1.Text = "Parsing…";

// создаем объект re, задавая в его конструкторе

// шаблон и опции

Regex re = new Regex(tbPattern.Text, tbOptions.Text);

// Выполняем поиск заданного выше шаблона внутри

// текста и текстового поля

tbTextForSearch MatchCollection mc = re.Matches(tbTextForSearch.Text);

iCountMatchs = mc.Count;

// Выводим информацию о количестве найденных вхождений…

statusBar1.Text = "Load list (" + iCountMatchs.ToString() + ")…";

// …и заносим информацию о них в лист-бокс.

listBox1.BeginUpdate();

foreach(Match m in mc) {

// Для хранения информации о найденном вхождении

// мы используем созданный нами класс MyItem.

// Элементы управления (типа лист-бокса) в .Net

// позволяют хранить вместо текстового значения

// объект, а при отображении текста в строке вызывают

// метод – ToString. Так что объект любого класса,

// реализующего метод ToString, может выступать в

// качестве элемента лист-бокса.

listBox1.Items.Add(new MyItem(m.ToString(), m.Index, m.Length));

}

} catch(Exception e1) {

MessageBox.Show(e1.ToString(), "Error");

} finally {

listBox1.EndUpdate();

statusBar1.Text = "Done " + iCountMatchs.ToString();

}

}

Заключение

Это только краткое ведение в регулярные выражения и их использование. Если вы хотите лучше разобраться в этом, попробуйте потренироваться в создании регулярных выражений самостоятельно. Практика показывает, что разбор чужих регулярных выражений практически бесполезен, читать их почти невозможно. Однако лучше научиться пользоваться ими – это часто упрощает жизнь.

ВОПРОС – ОТВЕТ

Как вывести на экран картинку в JPEG/GIF/PNG/др. формате?

7 способов как это сделать

Автор: Павел Блудов

Демонстрационное приложение (WTL) DrawImg (50kb)

Сегодня практически все программы используют различные картинки в качестве элементов интерфейса. Даже существует API функция ::LoadImage(), умеющая загружать файлы в формате bmp, ico и cur. Этого достаточно для панелей управления и диалогов. Но если размер картинки превышает 100x100 пикселов и их нужно несколько, файлы формата bmp использовать не удобно. Хочется что-то вроде jpg или gif.

Тут ::LoadImage() нам уже не помошник. Придется использовать специальные библиотеки. Наибольшей популярностью пользуются:

Independent JPEG Group

Portable Network Graphics

TIFF Software

Intel(R) JPEG Library

Image Library

CXImage

Small JPEG Decoder Library

Все они хорошо документированны и снабжены примерами. Подробное рассмотрение этих библиотек займет слишком много времени и выходит за рамки этой статьи. Давайте лучше уделим внимание некоторым специальным API, предназначенным для работы с файлами изображений.

Способ 1 (OleLoadPicture)

Самый "официальный" способ. Появился вместе с OLE32 и работает до сих пор. Функции OleLoadPicture(Ex)и OleLoadPicturePathумеют загружать картинки в формате BMP, GIF, JPEG, ICO, WMF, и EMF:

#include

HRESULT Load(LPCTSTR szFile) {

CComPtr pStream;

// Load the file to a memory stream

HRESULT hr = FileToStream(szFile, &pStream);

if (SUCCEEDED(hr)) {

// Decode the picture

hr = ::OleLoadPicture(

pStream, // [in] Pointer to the stream that contains picture's data

0, // [in] Number of bytes read from the stream (0 == entire)

true, // [in] Loose original format if true

IID_IPicture, // [in] Requested interface

(void**)&m_pPicture // [out] IPictire object on success

);

}

return hr;

}

HRESULT DrawImg(HDC hdc, const RECT& rcBounds) {

if (m_pPicture) {

// Get the width and the height of the picture

long hmWidth = 0, hmHeight = 0;

m_pPicture->get_Width(&hmWidth);

m_pPicture->get_Height(&hmHeight);

// Convert himetric to pixels

int nWidth = MulDiv(hmWidth, ::GetDeviceCaps(hdc, LOGPIXELSX), HIMETRIC_INCH);

int nHeight = MulDiv(hmHeight, ::GetDeviceCaps(hdc, LOGPIXELSY), HIMETRIC_INCH);

// Display the picture using IPicture::Render

return m_pPicture->Render(

hdc, // [in] Handle of device context on which to render the image

rcBounds.left, // [in] Horizontal position of image in hdc

rcBounds.top, // [in] Vertical position of image in hdc

rcBounds.right - rcBounds.left, // [in] Horizontal dimension of destination rect.

rcBounds.bottom - rcBounds.top, // [in] Vertical dimension of destination rect.

0, // [in] Horizontal offset in source picture

hmHeight, // [in] Vertical offset in source picture

hmWidth, // [in] Amount to copy horizontally in source picture

-hmHeight, // [in] Amount to copy vertically in source picture

&rcBounds // [in, optional] Pointer to position of destination for a metafile hdc

);

}

return E_UNEXPECTED;

}

Достоинства: правильно работает с прозрачными картинками.

Недостатки: не поддерживает анимированный GIF (см. также CPicturEx). Не поддерживает PNG.

Способ 2 (GDI+)

Недостаток ::LoadImage() с лихвой исправили в GDI+. Объект Gdiplus::Imageумеет загружать картинки в формате bmp, gif, jpeg, png, TIFF, EXIF, WMF, и EMF:

#include

HRESULT Load(LPCTSTR szFile) {

USES_CONVERSION;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Алекс Jenter читать все книги автора по порядку

Алекс Jenter - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программирование на Visual C++. Архив рассылки отзывы


Отзывы читателей о книге Программирование на Visual C++. Архив рассылки, автор: Алекс Jenter. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x