Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 85 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2022, 12:19   #11
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 249
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
С фильтром пользователь просто не сможет ввести символы отличные от цифр.
Что ж с этим понятно, но как целое или вещественное число извлекать? Просто SendMessage(hEdit, EM_GETLINE, 0, &chBuffer), получается так.
apofioz вне форума Ответить с цитированием
Старый 25.09.2022, 12:49   #12
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,381
По умолчанию

https://learn.microsoft.com/en-us/wi...ext-operations
Достаточно GetWindowTextLength / GetWindowText
macomics вне форума Ответить с цитированием
Старый 25.09.2022, 12:59   #13
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 249
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Достаточно GetWindowTextLength / GetWindowText
То есть мой вариант тоже подходит.
По факту внутри "edit" значения всё равно хранятся в символьном виде, я правильно понимаю, иначе, как функция GetWindowTextLength сможет вычислить длину строки.
apofioz вне форума Ответить с цитированием
Старый 25.09.2022, 13:21   #14
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,381
По умолчанию

Да. Кстати у каждого окна есть поле GWL_USERDATA. Вы можете хранить число вводимое пользователем в этом поле. По коду получится длиннее, но смысл вот в чем. Вы обрабатываете EN_CHANGE, в котором получаете текстовое значение переводите его в число и сохраняете в GWL_USERDATA. При необходимости обратиться вам достаточно получать число из поля GWL_USERDATA, а при изменении числа переводите его в строку и обновляете текст в hEdit
macomics вне форума Ответить с цитированием
Старый 26.09.2022, 06:51   #15
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 249
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Вы можете хранить число вводимое пользователем в этом поле.
Но мне не нужно ничего вводить.


Цитата:
Сообщение от macomics Посмотреть сообщение
Вы обрабатываете EN_CHANGE, в котором получаете текстовое значение переводите его в число и сохраняете в GWL_USERDATA.
Нужно сначала что-то изменить в редакторе чтобы получить это сообщение(EN_CHANGE). Можно в WM_CREATE его туда запихнуть, но чем этот вариант будет отличаться от предыдущего, если только тем, что функция преобразования будет убрана из скроллбара. Хотя не факт, как тогда послать сообщение редактору, что бы он обновился. Если это сделать, то тогда в строку можно преобразовать в EN_UPDATE или как-то так. Если кончено я правильно уловил ход вашей мысли.
apofioz вне форума Ответить с цитированием
Старый 26.09.2022, 07:27   #16
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,381
По умолчанию

Цитата:
Сообщение от apofioz Посмотреть сообщение
Но мне не нужно ничего вводить.
Числа изменяемые нажатием на кнопки вверх и вниз тоже считаются пользовательским вводом.

Цитата:
Сообщение от apofioz Посмотреть сообщение
но чем этот вариант будет отличаться от предыдущего, если только тем
Тем что преобразования строки в число будет производиться только при изменении его в hEdit, а при любой попытке считывания вы будете получать его сразу в виде числа. Можно это делать и в EN_UPDATE, но это не критично. В данном случае т.к. вы не работаете с визуальным отображением hEdit, нет разницы между этими сообщениями.
macomics вне форума Ответить с цитированием
Старый 26.09.2022, 09:02   #17
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 249
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Тем что преобразования строки в число будет производиться только при изменении его в hEdit
Я не понимаю как это сообщение будет передаваться в hEdit, если я изменяю его в scrollbar-е я об этом спрашиваю. Если я изменяю некое значение в scrollbar, то нужно послать сообщение edit о том, что мы что-то изменили, а edit в свою очередь пошлёт оповещение EN_* в WM_COMMAND с значением этого оповещения в переменной HIWORD(wParam)(Если я правильно понимаю взаимодействие элементов управления и главного окна). Если бы я знал как это делать, то объявив статическую переменную, как я это сделал, так же преобразовывал бы в строку только один раз.
apofioz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 85 тыс рублей в месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо написать "таймер", который будет запускаться при нажатии кнопки "Start", приостанавливаться на "Pause", и сбрасываться на "Reset" billiejean78 JavaScript, Ajax 1 03.09.2021 08:58
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Возможно ли сделать выделение значения в столбце "факт" в красный цвет шрифта, если оно выходит меньше значения в столбце "план" ? squit Microsoft Office Excel 19 17.01.2015 20:09
исправить это условие чтоб "1" выводилось на терминал даже если $stdat2[9] принимала не числовые значения sergeyfromkomi PHP 5 24.04.2010 10:44