|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
Как создать на VB6 уникодный InputBox? Чтобы при вводе в InputBox можно было получать китайские иероглифы и так далее15.11.2023, 22:50. Показов 5448. Ответов 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 так, чтобы можно было вставить только один знак минус |
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 18.11.2023, 09:40 [ТС] | |
|
К сожалению, я не знаю исходного кода функции InputBox, но можно самому легко догадаться, что она вызывает функцию DialogBoxParamA, которая создает модальное диалоговое окно из ресурса шаблона диалогового окна.
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|||||||||||
| 18.11.2023, 10:12 [ТС] | |||||||||||
|
Да, для вызова InputBox используется именно DialogBoxParam. Я сейчас проэксперементировал и реально смог вызвать это самое заветное диалоговое окно InputBox из ресурсов msvbvm60.dll. А это значит, что я на правильном пути понимания исходного кода функции InputBox.
Пример (модуль):
0
|
|||||||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 18.11.2023, 14:54 [ТС] | |
|
testuser2, как так получается, что у тебя инпутбокс мой не отображал китайщину, а у людей, говорят, VBA уже встроенный инпутбокс поддерживает уникод? Вот здесь говорят: InputBox с поддержкой юникода я специально тему там создал для опроса VBA'шников)
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||||||||||||||||
| 19.11.2023, 01:41 [ТС] | ||||||||||||||||
|
Ура!!! Наконец-таки, я создал новый модуль для вызова юникодного InputBox'а. Теперь InputBox вызывается по совершенно новой технологии, минуя саму функцию InputBox, вызывается всего одной строкой кода:
Но никто ещё, кроме меня, не написал это правильно через простую функцию DialogBoxParam. Надо будет иностранцам кстати тоже подогнать этот код, а то они там на форуме до сих пор обсуждают этот "костыль" через хуки и субклассирование. А мой юникодный InputBox работает даже без манифестов!!! Это значительный прорыв вообще. Я очень рад, что я это создал))) Код нового модуля:
0
|
||||||||||||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||||||
| 19.11.2023, 02:53 [ТС] | ||||||
|
Всё ещё проще, оказывается, есть скрипт через CreateObject прочитал на иностранном форуме, но диалог вызывается не модальным:
0
|
||||||
| 19.11.2023, 05:57 | |||||||
|
Добавлено через 1 минуту Ошибка
А вот "JScript" подхватывает "на ура"
0
|
|||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
||||||
| 19.11.2023, 13:05 [ТС] | ||||||
|
testuser2, попробуй этот новый код (уже теперь модальный InputBox):
Надо кстати ещё проверить, будет ли этот код работать в Xp...
0
|
||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 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
|
||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 19.11.2023, 14:48 [ТС] | |
|
testuser2, ну и хрен с ним...
Добавлено через 43 секунды это уже отдельная тема почему в VBA не работает "MSScriptControl.ScriptControl"
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 29.11.2023, 11:06 [ТС] | |
|
Оказывается тема продолжается, так как ВанГогИгрок меня озадачил своим новым кодом, посмотрите вот: https://www.vbforums.com/showt... ost5624133
Он изучил мой код и написал какой-то новый код с использованием некого трамплина. Я если честно удивлён его новому решению. Добавлено через 1 минуту Как я понял он решил перехватывать функцию DialogBoxParamA Добавлено через 2 минуты Скоро придётся писать третью версию модуля, чувствую... Добавлено через 6 минут Неужели можно в любом месте кода просто писать InputBox вызывать родной InputBox и перехватывать функцию DialogBoxParamA какими-то трамплинами и обрабатывать... Для уникодности... Добавлено через 1 час 54 минуты ВанГогИгрок не учёл самого главного: его код не работает без манифеста, поэтому не буду я пользоваться его кодом. Он перехватывает функцию DialogBoxParamA и перенаправляет на свою оконную процедуру диалогового окна, с помощью ассемблерной вставки по моему, но это не важно, важно, что его код не работает без манифестов. Поэтому какие бы он там трамплины не использовал его код всё равно хуже, а он мне ответил, что это не соревнование аххахахаха Добавлено через 12 секунд Но зато третью версию мне писать не надо)))
1
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 29.11.2023, 19:02 [ТС] | |
|
Я указал ему на ошибку, Вангогу, и он исправил её. Теперь у него и без манифестов юникод работает. Хм, а ведь у него совсем другой алгоритм. Он перехватывает функцию DialogBoxParamA через хук и перенаправляет уже на DialogBoxParamW функцию. Я никогда раньше не работал с хуками перехвата функций, поэтому это интересно.
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 03.12.2023, 23:34 [ТС] | |
|
Помогите, пожалуйста, разобраться с тем как именно код майкрософта "центрирует" инпутбокс на экране. Если это можно назвать центровкой конечно, он выше центра располагается окно диалоговое. Вот я прилагаю свои наброски, с использованием трамплина хука перехвата АПИ-функции.
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 03.12.2023, 23:55 [ТС] | |
|
Чего я хочу? Я хочу вскрыть исходный код майкрософта, именно функции обратного вызова DlgProc, именно в секции WM_INITDIALOG, с целью, чтобы узнать как именно майкрософт "центрирует" это окно. Ведь положение окна на экране получается не ровно по центру, а чуть выше чем по центру, именно эту формулу мне никак не удалось ещё раскрыть.
Добавлено через 50 секунд Я и так написал всё почти правильно, почти как в майкрософте написали когда-то. Но не имея исходников майкрософта самому догадываться до этого всего очень-очень сложно. Добавлено через 4 минуты Просто я не хочу как ВанГогИгрок использовать трамплины эти и перенаправления на майкрософтовский код а потом его второй же раз изменять... У него сначала задаётся например текст окна и надписей в оригинальной функции обратного вызова майкрософтовским кодом в WM_INITDIALOG а потом он переписывает своим кодом в WM_SHOWWINDOW в результате текст надписей задаётся целых два раз - это неправильный подход. Правильный подход как у меня изначально во второй версии модуля, сразу исходный код инпутбокса без вызова майкрософтовского кода вообще. Ну конечно если вызывать майкрософтовский код именно то тогда центровка будет как надо... Но я не хочу это делать как делает ВанГогИгрок с vbforums.
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 29.01.2024, 12:52 [ТС] | |
|
0
|
|
|
bite
5011 / 4841 / 852
Регистрация: 13.04.2015
Сообщений: 10,121
|
|
| 29.01.2024, 13:18 | |
|
0
|
|
| 29.01.2024, 14:44 | |||
|
1
|
|||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 30.01.2024, 01:04 [ТС] | |
|
Советы не программировать на VB6 меня не устраивают, а вот тебе testuser2 спасибо, но как-то это всё замудрёно ты написал конечно :-)
Добавлено через 1 минуту В этой теме у меня уже есть на самом деле много ответов как вызвать InputBox с поддержкой юникода. Просто я не всё до конца смог доработать. Хук с помощью SetWinEventHook штука хорошая конечно, но от этого хука, я помню, я уже отказался. Так как я нашёл способ самому вызывать диалоговое окно InputBox и я уже говорил об этом. Добавлено через 1 минуту Я лишь не нашёл того самого кода, который каким-то образом, центрирует инпутбокс не в самом центре экрана, а как бы чуть выше центра. Я не разгадал эту формулу ещё.
0
|
|
| 30.01.2024, 01:04 | |
|
Можно ли так сделать так,чтобы предыдущего окно закрывалось при нажатие кнопки далее
Создать класс из процедуры так, чтобы в нём при вызове можно было менять направление отсчёта счётчика цикла Как создать файл DLL так, чтобы его можно было подключить к VBA Excel? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|