|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
Как создать на VB6 уникодный InputBox? Чтобы при вводе в InputBox можно было получать китайские иероглифы и так далее15.11.2023, 22:50. Показов 4770. Ответов 51
Как создать на VB6 уникодный InputBox? Чтобы при вводе в InputBox можно было получать китайские иероглифы и так далее. Текстовое поле InputBox'а, что самое интересное и так позволяет вводить китайщину, но вот на выходе функции мы получаем уже знаки вопросов...
Добавлено через 54 минуты Хотите чудо? InputBox создаётся с ANSI-окнами, и с ANSI текстовым полем, без стилизации окна манифестом... Со стилизацией манифестом уже создаётся Unicode окна и уникодное текстовое поле ввода... Это очень странно и меня очень шокировало... Добавлено через 15 минут Таким образом, уникодный InputBox будет работать только если стилизовать программу, применить стили красивостей окон. В противном случае пришлось бы уничтожать старый Edit через DestroyWindow и поверх создавать новое текстовое поле через CreateWindowExW... Чтобы работало и без стилей...
0
|
|
| 15.11.2023, 22:50 | |
|
Ответы с готовыми решениями:
51
Можно ли настроить Inputbox, чтобы не блокировалась книга и можно было изменять данные в ячейках? как сделать чтоб при вводе в inputbox вводились толька символы 0.123456789 Обработать событие OnKeyPress при вводе целого числа в Edit так, чтобы можно было вставить только один знак минус |
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 18.11.2023, 09:40 [ТС] | |
|
К сожалению, я не знаю исходного кода функции InputBox, но можно самому легко догадаться, что она вызывает функцию DialogBoxParamA, которая создает модальное диалоговое окно из ресурса шаблона диалогового окна.
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||||||||||
| 18.11.2023, 10:12 [ТС] | |||||||||||
|
Да, для вызова InputBox используется именно DialogBoxParam. Я сейчас проэксперементировал и реально смог вызвать это самое заветное диалоговое окно InputBox из ресурсов msvbvm60.dll. А это значит, что я на правильном пути понимания исходного кода функции InputBox.
Пример (модуль):
0
|
|||||||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 18.11.2023, 14:54 [ТС] | |
|
testuser2, как так получается, что у тебя инпутбокс мой не отображал китайщину, а у людей, говорят, VBA уже встроенный инпутбокс поддерживает уникод? Вот здесь говорят: InputBox с поддержкой юникода я специально тему там создал для опроса VBA'шников)
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||||||||||||
| 19.11.2023, 01:41 [ТС] | ||||||||||||||||
|
Ура!!! Наконец-таки, я создал новый модуль для вызова юникодного InputBox'а. Теперь InputBox вызывается по совершенно новой технологии, минуя саму функцию InputBox, вызывается всего одной строкой кода:
Но никто ещё, кроме меня, не написал это правильно через простую функцию DialogBoxParam. Надо будет иностранцам кстати тоже подогнать этот код, а то они там на форуме до сих пор обсуждают этот "костыль" через хуки и субклассирование. А мой юникодный InputBox работает даже без манифестов!!! Это значительный прорыв вообще. Я очень рад, что я это создал))) Код нового модуля:
0
|
||||||||||||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
| 19.11.2023, 02:53 [ТС] | ||||||
|
Всё ещё проще, оказывается, есть скрипт через CreateObject прочитал на иностранном форуме, но диалог вызывается не модальным:
0
|
||||||
| 19.11.2023, 05:57 | |||||||
|
Добавлено через 1 минуту Ошибка
А вот "JScript" подхватывает "на ура"
0
|
|||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
| 19.11.2023, 13:05 [ТС] | ||||||
|
testuser2, попробуй этот новый код (уже теперь модальный InputBox):
Надо кстати ещё проверить, будет ли этот код работать в Xp...
0
|
||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 19.11.2023, 13:47 [ТС] | |
|
testuser2, тогда мой модуль на API будет весьма кстати для VBA
0
|
|
| 19.11.2023, 14:06 | ||||||
|
HackerVlad, на vba же есть Application.InputBox. Вот со скрипт-контролом, я что-то не пойму. Я помню, как-то видел у Catstail'а была интересная статья на Хабре, сейчас нашел ее и там как раз-таки, речь идет про VBA и MSScriptControl, то беж у него работает. Проверю сейчас на x64 vba..
Добавлено через 8 минут На x64 также не работает, на раннем связывании в том числе
0
|
||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 19.11.2023, 14:48 [ТС] | |
|
testuser2, ну и хрен с ним...
Добавлено через 43 секунды это уже отдельная тема почему в VBA не работает "MSScriptControl.ScriptControl"
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 29.11.2023, 11:06 [ТС] | |
|
Оказывается тема продолжается, так как ВанГогИгрок меня озадачил своим новым кодом, посмотрите вот: https://www.vbforums.com/showt... ost5624133
Он изучил мой код и написал какой-то новый код с использованием некого трамплина. Я если честно удивлён его новому решению. Добавлено через 1 минуту Как я понял он решил перехватывать функцию DialogBoxParamA Добавлено через 2 минуты Скоро придётся писать третью версию модуля, чувствую... Добавлено через 6 минут Неужели можно в любом месте кода просто писать InputBox вызывать родной InputBox и перехватывать функцию DialogBoxParamA какими-то трамплинами и обрабатывать... Для уникодности... Добавлено через 1 час 54 минуты ВанГогИгрок не учёл самого главного: его код не работает без манифеста, поэтому не буду я пользоваться его кодом. Он перехватывает функцию DialogBoxParamA и перенаправляет на свою оконную процедуру диалогового окна, с помощью ассемблерной вставки по моему, но это не важно, важно, что его код не работает без манифестов. Поэтому какие бы он там трамплины не использовал его код всё равно хуже, а он мне ответил, что это не соревнование аххахахаха Добавлено через 12 секунд Но зато третью версию мне писать не надо)))
1
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 29.11.2023, 19:02 [ТС] | |
|
Я указал ему на ошибку, Вангогу, и он исправил её. Теперь у него и без манифестов юникод работает. Хм, а ведь у него совсем другой алгоритм. Он перехватывает функцию DialogBoxParamA через хук и перенаправляет уже на DialogBoxParamW функцию. Я никогда раньше не работал с хуками перехвата функций, поэтому это интересно.
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 03.12.2023, 23:34 [ТС] | |
|
Помогите, пожалуйста, разобраться с тем как именно код майкрософта "центрирует" инпутбокс на экране. Если это можно назвать центровкой конечно, он выше центра располагается окно диалоговое. Вот я прилагаю свои наброски, с использованием трамплина хука перехвата АПИ-функции.
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 03.12.2023, 23:55 [ТС] | |
|
Чего я хочу? Я хочу вскрыть исходный код майкрософта, именно функции обратного вызова DlgProc, именно в секции WM_INITDIALOG, с целью, чтобы узнать как именно майкрософт "центрирует" это окно. Ведь положение окна на экране получается не ровно по центру, а чуть выше чем по центру, именно эту формулу мне никак не удалось ещё раскрыть.
Добавлено через 50 секунд Я и так написал всё почти правильно, почти как в майкрософте написали когда-то. Но не имея исходников майкрософта самому догадываться до этого всего очень-очень сложно. Добавлено через 4 минуты Просто я не хочу как ВанГогИгрок использовать трамплины эти и перенаправления на майкрософтовский код а потом его второй же раз изменять... У него сначала задаётся например текст окна и надписей в оригинальной функции обратного вызова майкрософтовским кодом в WM_INITDIALOG а потом он переписывает своим кодом в WM_SHOWWINDOW в результате текст надписей задаётся целых два раз - это неправильный подход. Правильный подход как у меня изначально во второй версии модуля, сразу исходный код инпутбокса без вызова майкрософтовского кода вообще. Ну конечно если вызывать майкрософтовский код именно то тогда центровка будет как надо... Но я не хочу это делать как делает ВанГогИгрок с vbforums.
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 29.01.2024, 12:52 [ТС] | |
|
0
|
|
|
sleep
4931 / 4593 / 840
Регистрация: 13.04.2015
Сообщений: 9,753
|
|
| 29.01.2024, 13:18 | |
|
0
|
|
| 29.01.2024, 14:44 | |||
|
1
|
|||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 30.01.2024, 01:04 [ТС] | |
|
Советы не программировать на VB6 меня не устраивают, а вот тебе testuser2 спасибо, но как-то это всё замудрёно ты написал конечно :-)
Добавлено через 1 минуту В этой теме у меня уже есть на самом деле много ответов как вызвать InputBox с поддержкой юникода. Просто я не всё до конца смог доработать. Хук с помощью SetWinEventHook штука хорошая конечно, но от этого хука, я помню, я уже отказался. Так как я нашёл способ самому вызывать диалоговое окно InputBox и я уже говорил об этом. Добавлено через 1 минуту Я лишь не нашёл того самого кода, который каким-то образом, центрирует инпутбокс не в самом центре экрана, а как бы чуть выше центра. Я не разгадал эту формулу ещё.
0
|
|
| 30.01.2024, 01:04 | |
|
Помогаю со студенческими работами здесь
40
Можно ли так сделать так,чтобы предыдущего окно закрывалось при нажатие кнопки далее
Создать класс из процедуры так, чтобы в нём при вызове можно было менять направление отсчёта счётчика цикла Как создать файл DLL так, чтобы его можно было подключить к VBA Excel? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
в-строка - входное арифметическое выражение в инфиксной(обычной). . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|