Отправлено: 09.07.07 18:51. Заголовок: Конвертер систем исчисления
Наконец-то появилась путевая программа, до этого для конвертирования я пользовался программой Леонида Егорова, но ее возможности весьма ограничены. Я хочу сказать, что если б еще добавить кнопку «поверх всех окон», как у упомянутой выше программы, то цены бы ей не было.
Действительно, галочка на программе Леонида Егорова у меня стоит постоянно и трудностей при этом не возникает. Если нуэно убрать я просто сворачиваю окно. А вообще конечно это мам решать.
Отправлено: 21.01.08 23:22. Заголовок: Кроме редактирования..
Кроме редактирования конфигурации для автономного программатора нужно редактировать и ID. Для этого разместил StringGadget в правом нижнем углу как в IC-Prog ССЫЛКА ДЛЯ СКАЧИВАНИЯ . Возник вопрос, как запретить ввод недопустимых символов (не входящих в шестнадцатеричную систему) и переключать раскладку клавиатуры. На форуме по бейсику нашел текст вашего конвертера. Методом исключения нашел все те функции, которые за это отвечают. Что с ними делать это понятно, я их уже скопировал в программу автономного программатора - все работает. Единственное что не ясно это для чего нужна строчка hInstance = GetModuleHandle_(0). Мне понятно, что она что-то получает и через переменную hInstance определяет один из параметров функции SetWindowsHookEx. Но что это за параметр мне не понятно (впрочем, как и все остальные параметры ). С другой стороны работает, а это главное. Но все-таки хочется знать, нужно ставить hInstance = GetModuleHandle_(0) или нет. В любом случае изменения в работе я не наблюдаю.
И еще. Заметил что в вашем конвертере в HEX и DEC строку вводятся символы )(*&^%$ и другие. Не лучше ли заменить строку If (wParam>=48 And wParam =< 57) Or (wParam>=65 And wParam =< 70) Or wParam < 31 Or (wParam>=37 And wParam =< 40) Or wParam=46 в процедуре KeyboardProc(nCode, wParam, lParam) на If (wParam>=65 And wParam =< 70) Or (wParam>=96 And wParam =< 105) Or wParam=8. Во всяком случае, я так сделал и вполне доволен результатом. Скажите, если есть подводные камни.
Пост N: 516
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
2
Отправлено: 22.01.08 20:03. Заголовок: Гоша Александрович п..
Гоша Александрович пишет:
цитата:
Единственное что не ясно это для чего нужна строчка hInstance = GetModuleHandle_(0)
Это API функция (на это указывает символ "_" перед скобкой). Зачем она нужна? Да кто его знает, толкового справочника на русском нет! Сам этот код "одолжил" из КодАрхива.
цитата:
SetWindowsHookEx
Это тоже API функция, она перенаправляет все нажатия кнопок в процедуру, которая проверяет корректность ввода.
Гоша Александрович пишет:
цитата:
)(*&^%$
К сожалению это так Но сомневаюсь что кто то их будет нажимать. Просто не заметил этот глюк. Гоша Александрович пишет:
цитата:
wParam>=96
надо wParam>=97 (см таблицу ASCII в инструментах PureBasic)
Да и ещё, цифры от 0 до 9 имеют коды 48...57 они тоже нужны. Кнопки со стрелками, перемещающие курсор имеют коды 37...40
Потому что происходит проверка кодов клавиш на низовом уровне, где не различаются строчные и прописные буквы раскладка клавиатуры и т. д.
Коды всех кнопок клавиатуры можно узнать при помощи этой программы.
OpenWindow(0,0,0,230,150,"", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) CreateGadgetList(WindowID(0)) EditorGadget(0,10,10,210,130,#PB_Editor_ReadOnly ) Repeat Event=WaitWindowEvent() If Event=#WM_KEYDOWN ; Была нажата кнопка AddGadgetItem(0,-1,Str( EventwParam() )) ; Помещаем её код в редактор SendMessage_(GadgetID(0),#EM_SETSEL,10000,1000) ; Прокрутка текста EndIf Until Event=#PB_Event_CloseWindow
Пост N: 518
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
2
Отправлено: 23.01.08 14:39. Заголовок: Да тут кроме того ну..
Да тут кроме того нужно хорошо разбиратся в API функциях чтобы работать на низовом уровне. К сожалению в API я разбираюсь не очень хорошо, вот и происходят подобного рода ошибки.
Отправлено: 23.01.08 23:53. Заголовок: Петр, я дополнил стр..
Петр, я дополнил строчки в процедуре KeyboardProc(nCode, wParam, lParam) как писал в предыдущем сообщении ССЫЛКА ДЛЯ СКАЧИВАНИЯ . Теперь можно вводить с цифровой клавиатуры. Или так нельзя делать?
Все даты в формате GMT
3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет