Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Графический курсор (каретка) в поле EDIT

09.08.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
Сегодня отдохнем от системы и немного поработаем с графикой, будем делать собственный графический курсор в поле EDIT. Какого-то необычайно полезного практического применения этому нет, просто симпатичное дополнение к интерфейсу, например, к окнам нестандартной формы. Ну а что, раз уж наворотили чудо-окна, почему бы не наворотить и чудо-курсор.

Начнем с теории. В отличие от "мышиного" курсора, который может легко принимать любой вид, управлять кареткой, то есть курсором в текстовом поле, не так просто. Функция CreateCaret позволяет только описывать форму для каретки, но не меняет ее изображение. Достаточно один раз попробовать, чтобы убедиться в ее бесполезности. Придется самостоятельно рисовать графическую каретку на холсте поля ввода.
  1.         ; Загрузить из ресурсов картинку
  2.         invoke  GetModuleHandle,0
  3.         invoke  LoadBitmap,eax,1
  4.         mov     [hСaret],eax
  5.  
  6.         ; Выбрать картинку для холста поля ввода
  7.         invoke  GetDlgItem,[hwnddlg],ID_EDIT
  8.         invoke  GetDC,eax
  9.         mov     [hDC],eax
  10.         invoke  CreateCompatibleDC,[hDC]
  11.         mov     [hСaretDC],eax
  12.         invoke  SelectObject,[hСaretDC],[hСaret]
  13.  
  14.         ; Получить цвет угловой точки картинки
  15.         invoke  GetPixel,[hСaretDC],0,0
  16.         mov     [bColor],eax
  17.         ; Создать кисть с этим цветом
  18.         invoke  CreateSolidBrush,[bColor]
  19.         mov     [hBrush],eax
  20.  
  21.         ; Прибраться за собой
  22.         invoke  DeleteObject,[hСaret]
Для простоты реализации рисунок текстового курсора будет храниться в ресурсах. Загружаем его стандартными функциями, затем получаем холст поля ввода и добавляем к нему загруженный рисунок. Теоретически рисунок каретки может быть любого размера, но практически он должен хотя бы по вертикали соответствовать высоте поля ввода, а лучше высоте шрифта.

Читать статью целиком »
Просмотров: 301 | Комментариев: 7

Как добавить замещающий текст в поле EDIT

15.03.2021 | Категория: Образ мышления: Assembler | Автор: ManHunter
Продолжаем ставить эксперименты с полем EDIT. Сегодня будем добавлять в поле ввода так называемый "cue banner", что с некоторой натяжкой можно перевести на русский язык как "замещающий текст". Очень полезная штуковина, помогающая пользователю при заполнении форм с неочевидным форматом вводимых данных, а также снимающая с разработчика различные костыльно-велосипедные задачи по кастомной обработке полей ввода. Смотрите сами. По умолчанию в пустом поле ввода располагается замещающий текст. Это может быть пример данных или информация о необходимости заполнения, да вообще что угодно. Когда пользователь переходит на это поле, текст заполнителя исчезает и позволяет вводить свой собственный текст. А если поле ввода теряет фокус, но текст при этом все еще отсутствует, тогда замещающий текст возвращается обратно на свое место. При этом замещающий текст фактически не является содержимым поля, его нельзя получить через WM_GETTEXT или GetWindowText, он никуда не попадет при отправке незаполненной формы.

Для добавления замещающего текста в однострочное поле EDIT используется сообщение EM_SETCUEBANNER. В параметре lParam передается указатель на юникодную строку, которая будет отображаться в качестве замещающего текста. При этом не имеет значения, какую кодировку имеет само приложение, строка должна быть только в юникоде. В параметре wParam передается режим отображения замещающего текста. В старых мануалах вы можете встретить информацию, что этот параметр зарезервирован и там обязательно должен быть ноль. В последней редакции официальной документации написано, если значение нулевое, то подсказка будет пропадать сразу же при установке фокуса на EDIT, а если указано значение 1, то подсказка пропадет только при начале ввода пользовательского текста. И похоже, что из-за этого дополнения на сайте MSDN заявлена поддержка операционной системы как минимум Windows Vista, хотя на деле EM_SETCUEBANNER прекрасно работает, начиная с Windows XP.

Читать статью целиком »
Просмотров: 338 | Комментариев: 0

Tiny Clock 1.4

09.08.2018 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Tiny Clock

Небольшие часы-будильник на рабочий стол. Написаны для личных нужд на чистом Ассемблере, поэтому имеют такой скромный размер. Правая кнопка мыши - контекстное меню, средняя (колесико) или клавиша Esc - свернуть часы в трей. Часы не требуют установки, все настройки хранятся в папке с программой, никаких следов в системе не остается (кроме записи функции автозапуска в реестр). Настройки программы:

View Calendar - открыть календарик. Используется стандартный системный календарь со всеми его возможностями.

Set alarm - установить будильник. Задается точное время срабатывания, звуковой сигнал, текст сообщения или можно выбрать файл для запуска. Для удобства вы можете быстро выбрать из списка фиксированный интервал от текущего времени. После срабатывания будильника он автоматически отключается. Звуковой сигнал можете заменить на свой, переписав файл alarm.wav

Set reminder - установить периодическое напоминание. В программе предусмотрены два типа напоминаний: определенное количество или до заданного времени. Также напоминание может автоматически активироваться каждый день. При запуске часов после установленного времени напоминания, интервал следующего напоминания рассчитывается автоматически. Звуковой сигнал можете заменить на свой, переписав файл reminder.wav

Читать статью целиком »
Просмотров: 25944 | Комментариев: 152

Возвращаем классические balloon'ы в Windows 10

16.07.2018 | Категория: Software | Автор: ManHunter

Возвращаем классические balloon'ы в Windows 10

Просили статей по Windows 10? Нате, получите. Об ущербности интерфейса Windows 10 можно говорить очень долго и сегодня я расскажу, как можно вернуть привычный вид всплывающих подсказок в системном трее. По умолчанию ballon'ы появляются в виде каких-то плашек, непонятно к какому значку относящихся. К счастью, это можно исправить.

Читать статью целиком »
Просмотров: 2186 | Комментариев: 7

Моноширинные шрифты с кириллицей для программирования

10.12.2015 | Категория: Software | Автор: ManHunter

Моноширинные шрифты с кириллицей для программирования

Если ваша профессия связана с программированием, то вам приходится большое количество времени проводить за монитором. Поэтому, к выбору подходящего шрифта для системы надо подходить не менее тщательно, чем к выбору инструментов программирования. Мои требования к шрифту для работы: моноширинный, наличие кириллицы, визуальное различие между буквой "O" и цифрой "0", ну и, конечно же, не напрягающий глаза при длительной работе в редакторе кода. За все время у меня собралась небольшая коллекция шрифтов для программирования, может быть какой-нибудь вам тоже понравится.

Читать статью целиком »
Просмотров: 39189 | Комментариев: 49

prev 01 02 03 04 05
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.11 сек. / MySQL: 3 (0.0473 сек.) / Память: 4.75 Mb
Наверх