locked
Ввод текста без использования XAML RRS feed

  • Общие обсуждения

  • Всем доброго дня!

    Сразу хочу заметить, что я не использую язык разметки XAML для разработки приложений, следовательно у меня нет специализированных форм и текстовых полей для ввода текста!

    Пишу приложение с Direct3D (только машинный код). В качестве целевой платформы выбрал Windows 8.1. Весь пользовательский интерфейс в приложении (диалоговые окна, кнопки) реализую сам, через вывод спрайтов. Дошло дело до реализации текстового поля. Как мне его реализовать (интересует момент получения введённого символа)?

    Стоит заметить, что данное приложение можно будет запускать как на планшете под управлением Windows 8.1, так и на компьютере. Следовательно в первом случае нет физической клавиатуры, а во втором она есть. Если брать второй случай, то я думаю, можно просто подписаться на события KeyDown и KeyUp. А если программа запускается на планшете, то как-то можно вызвать виртуальную клавиатуру (напомню, я не использую XAML)? И как вообще определять есть ли физическая клавиатура? То есть чтобы в одном случае что-то отображать, а в другом просто ловить нажатые клавиши.

    И если подписываться на события KeyDown и KeyUp, то как потом код клавиши преобразовывать в символ с учётом текущего языка? В Win32 API для этого была функция ToUnicodeEx(), но в Windows Phone и Windows 8 Store её нету.

    Что вообще Вы посоветуете сделать для ввода текста?

    Спасибо за внимание!


    7 ноября 2013 г. 9:05

Все ответы

  • Ну раз вы выбрали путь самурая, и прогресс в виде XAML вам чужд, то может вам стоит хотя бы поискать готовые NuGet решения подобных задач на Direct3D?

    Yes, yes - am back!

    16 ноября 2013 г. 7:39
  • Поискал, ничего не нашёл.
    16 ноября 2013 г. 12:34
  • Поискал, ничего не нашёл.

    Ну тогда остается KeyDown и KeyUp. Какая клавиатура используется (виртуальная или физическая) не принципиально, события одни и те же.

    А вот насчет "как потом код клавиши преобразовывать к символ с учётом текущего языка" тут не подскажу. C# то не жалую а С++ это вообще лес дримучий


    Yes, yes - am back!

    16 ноября 2013 г. 12:40
  • KeyDown и KeyUp я видел, и подпись на них прекрасно работает (что касается ввода с клавиатуры физической). Возможно и всё заработает и от виртуальной клавиатуры, только как её отобразить на экране?

    А что C#, что C++, что даже Visual Basic, разницы нет, так как все они умеют использовать функции Win32 API и самой WinRT.


    16 ноября 2013 г. 14:23
  • А что C#, что C++, что даже Visual Basic, разницы нет, так как все они умеют использовать функции Win32 API и самой WinRT.
    Это да, но я использую классы .Net и подобных проблем не испытываю.

    Yes, yes - am back!

    16 ноября 2013 г. 14:44
  • Между тем, всё равно вопрос открытия виртуальной клавиатуры остался.

    16 ноября 2013 г. 14:48
  • Между тем, всё равно вопрос открытия виртуальной клавиатуры остался.

    Я в другом посте дал вам ссылку на руководство. Совсем рядом другое руководство и внизу там есть описание работы с сенсорной клавиатурой и ссылка на пример (в том числе на C++)

    Yes, yes - am back!

    16 ноября 2013 г. 15:59
  • К сожалению что статья, что пример - всё это XAML и его текстовые поля.
    17 ноября 2013 г. 8:12
  • К сожалению что статья, что пример - всё это XAML и его текстовые поля.
    Есть подозрения, что мы не понимаем друг друга. Тот факт, что вы не используете XAML не говорит о том, что вы не используете классы WinRT. в частности ваш кастомный TextBox должен реализовать интерфейс ITextProvider. Этот интерфейс уведомит систему автоматизации, что нужно вызвать виртуальную клавиатуру. Не ленитесь читать статьи на которые вам дают ссылки, тем более что вы человек не ленивый раз возитесь с голым C++

    Yes, yes - am back!

    17 ноября 2013 г. 8:27
  • Подсказали как открыть виртуальную клавиатуру для Windows Phone 8, через изменение свойства окна IsKeyboardInputEnabled на true. Однако у Windows 8/8.1 окон нет такого свойства. Как для них можно сделать такое же?
    17 ноября 2013 г. 8:28