|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
Как создать на VB6 уникодный InputBox? Чтобы при вводе в InputBox можно было получать китайские иероглифы и так далее15.11.2023, 22:50. Показов 4878. Ответов 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 так, чтобы можно было вставить только один знак минус |
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 18.11.2023, 09:40 [ТС] | |
|
К сожалению, я не знаю исходного кода функции InputBox, но можно самому легко догадаться, что она вызывает функцию DialogBoxParamA, которая создает модальное диалоговое окно из ресурса шаблона диалогового окна.
0
|
|
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||||||||||
| 18.11.2023, 10:12 [ТС] | |||||||||||
|
Да, для вызова InputBox используется именно DialogBoxParam. Я сейчас проэксперементировал и реально смог вызвать это самое заветное диалоговое окно InputBox из ресурсов msvbvm60.dll. А это значит, что я на правильном пути понимания исходного кода функции InputBox.
Пример (модуль):
0
|
|||||||||||
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 18.11.2023, 14:54 [ТС] | |
|
testuser2, как так получается, что у тебя инпутбокс мой не отображал китайщину, а у людей, говорят, VBA уже встроенный инпутбокс поддерживает уникод? Вот здесь говорят: InputBox с поддержкой юникода я специально тему там создал для опроса VBA'шников)
0
|
|
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||||||||||||
| 19.11.2023, 01:41 [ТС] | ||||||||||||||||
|
Ура!!! Наконец-таки, я создал новый модуль для вызова юникодного InputBox'а. Теперь InputBox вызывается по совершенно новой технологии, минуя саму функцию InputBox, вызывается всего одной строкой кода:
Но никто ещё, кроме меня, не написал это правильно через простую функцию DialogBoxParam. Надо будет иностранцам кстати тоже подогнать этот код, а то они там на форуме до сих пор обсуждают этот "костыль" через хуки и субклассирование. А мой юникодный InputBox работает даже без манифестов!!! Это значительный прорыв вообще. Я очень рад, что я это создал))) Код нового модуля:
0
|
||||||||||||||||
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
| 19.11.2023, 02:53 [ТС] | ||||||
|
Всё ещё проще, оказывается, есть скрипт через CreateObject прочитал на иностранном форуме, но диалог вызывается не модальным:
0
|
||||||
| 19.11.2023, 05:57 | |||||||
|
Добавлено через 1 минуту Ошибка
А вот "JScript" подхватывает "на ура"
0
|
|||||||
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
| 19.11.2023, 13:05 [ТС] | ||||||
|
testuser2, попробуй этот новый код (уже теперь модальный InputBox):
Надо кстати ещё проверить, будет ли этот код работать в Xp...
0
|
||||||
|
Испарился
1742 / 638 / 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
|
||||||
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 19.11.2023, 14:48 [ТС] | |
|
testuser2, ну и хрен с ним...
Добавлено через 43 секунды это уже отдельная тема почему в VBA не работает "MSScriptControl.ScriptControl"
0
|
|
|
Испарился
1742 / 638 / 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
|
|
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 29.11.2023, 19:02 [ТС] | |
|
Я указал ему на ошибку, Вангогу, и он исправил её. Теперь у него и без манифестов юникод работает. Хм, а ведь у него совсем другой алгоритм. Он перехватывает функцию DialogBoxParamA через хук и перенаправляет уже на DialogBoxParamW функцию. Я никогда раньше не работал с хуками перехвата функций, поэтому это интересно.
0
|
|
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 03.12.2023, 23:34 [ТС] | |
|
Помогите, пожалуйста, разобраться с тем как именно код майкрософта "центрирует" инпутбокс на экране. Если это можно назвать центровкой конечно, он выше центра располагается окно диалоговое. Вот я прилагаю свои наброски, с использованием трамплина хука перехвата АПИ-функции.
0
|
|
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 03.12.2023, 23:55 [ТС] | |
|
Чего я хочу? Я хочу вскрыть исходный код майкрософта, именно функции обратного вызова DlgProc, именно в секции WM_INITDIALOG, с целью, чтобы узнать как именно майкрософт "центрирует" это окно. Ведь положение окна на экране получается не ровно по центру, а чуть выше чем по центру, именно эту формулу мне никак не удалось ещё раскрыть.
Добавлено через 50 секунд Я и так написал всё почти правильно, почти как в майкрософте написали когда-то. Но не имея исходников майкрософта самому догадываться до этого всего очень-очень сложно. Добавлено через 4 минуты Просто я не хочу как ВанГогИгрок использовать трамплины эти и перенаправления на майкрософтовский код а потом его второй же раз изменять... У него сначала задаётся например текст окна и надписей в оригинальной функции обратного вызова майкрософтовским кодом в WM_INITDIALOG а потом он переписывает своим кодом в WM_SHOWWINDOW в результате текст надписей задаётся целых два раз - это неправильный подход. Правильный подход как у меня изначально во второй версии модуля, сразу исходный код инпутбокса без вызова майкрософтовского кода вообще. Ну конечно если вызывать майкрософтовский код именно то тогда центровка будет как надо... Но я не хочу это делать как делает ВанГогИгрок с vbforums.
0
|
|
|
Испарился
1742 / 638 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 29.01.2024, 12:52 [ТС] | |
|
0
|
|
|
dive
4969 / 4664 / 847
Регистрация: 13.04.2015
Сообщений: 9,862
|
|
| 29.01.2024, 13:18 | |
|
0
|
|
| 29.01.2024, 14:44 | |||
|
1
|
|||
|
Испарился
1742 / 638 / 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? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|