Создание пользовательских значков типа "галочки"


Пользовательский точечный рисунок (значок) типа "галочки" должен быть такого же самого размера, как и заданный по умолчанию значок "галочки". Вы можете извлечь заданный по умолчанию размер значка "галочки" путем вызова функции GetSystemMetrics. Младшее слово величины возвращаемого значения этой функции определяет ширину; старшее слово - высоту значка.

Вы можете использовать растровые ресурсы, чтобы обеспечить программу значками типа "галочки". Однако, поскольку требуемый размер точечного рисунка изменяется в зависимости от типа дисплея, вам видимо придется по необходимости изменять размеры значка во время выполнения программы при помощи использования функции StretchBlt. Зависимость от значка, искажение, вызываемое изменением размеров, может привести к неприятному результату.

Вместо того чтобы использовать растровый ресурс, Вы можете создать точечный рисунок (значок) во время выполнения программы при помощи использования функций GDI.

Чтобы создать значок во время выполнения программы
  1. Используйте функцию CreateCompatibleDC, чтобы создать контекст устройства, совместимый с тем, который используется основным окном прикладной программы.

    В параметре функции hdc можно установить или значение ПУСТО (NULL) или величину возвращаемого значения из функции GetDC. CreateCompatibleDC возвращает значение дескриптора совместимого контекста устройства.

  2. Используйте функцию CreateCompatibleBitmap, чтобы создать точечный рисунок (значок), совместимый с основным окном приложения. 

    Параметры nWidth и nHeight этой функции устанавливают размеры значка; они должны определить информацию о ширине и высоте, возвращаемую функцией GetSystemMetrics.

    Обратите внимание! на то, что Вы можете также использовать и функцию CreateBitmap, чтобы создать одноцветный значок.

  3. Используйте функцию SelectObject для выбора значка в совместимом контексте устройства.
  4. Используйте рисующие функции GDI, такие как Ellipse и LineTo, чтобы нарисовать изображение внутри значка, или функции типа BitBlt и StretchBlt, чтобы копировать изображение в точечный рисунок (значок).

Дополнительную информацию смотри в главе Точечные рисунки.

Назад в оглавление
На главную страницу

Hosted by uCoz