![]() |
|
Модераторы: bsa |
![]()
|
|
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Есть код символа типа int. Надо вставить его между конкретными символами в строке типа wstring (т.е. insert, а не поверх другого символа).
Ну или хотя бы разобраться как его добавить в конец. Добавлено через 6 минут и 15 секунд у типа wstring есть методы _Insert и insert, но что-то я не врубаюсь в их параметры -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
через знак + не добавляются ни int, ни char Кроме них там, есть другие непонятные параметры с именами _Off, _Where, _Int_iterator_tag и др. вот их и не осилил. insert'ом вообще символ вставить можно? или только строку? -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
а если append попробовать или:
-------------------- |
|||
|
||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
разумеется - правильно wchar_t. ты же с юникодом работаешь.
Добавлено через 2 минуты и 6 секунд
Здесь надо читать книги по STL. |
||||
|
|||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Вот так прокатило:
Но почему-то добавляемые буквы приводятся к верхнему регистру. Если использовать не wstring wch; а wchar_t wch[1];, то почему-то добавляет по два символа, один нормальный а один глючный, как будто wchar_t занимает 4 байта. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Ну просто int обычно занимает 4 байта. А wchar_t 2.
|
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Как победить приведение к верхнему регистру?
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Продолжаю разбираться с приведением к верхнему регистру. Оказывается такой код символа уже приходит в параметрах сообщения WM_KEYDOWN. Странно как-то.
Вот помню в Билдере есть две функции соответствующие - OnKeyDown и OnKeyPress. И кажется OnKeyPress поинтеллектуальнее. Но вот сообщения WM_KEYPRESS нету, а жаль. Вообще приложение пишется под Windows Mobile. И когда я запускаю эмулятор девайса, там можно как в настоящем устройстве открывать и пользоваться виртуальной клавиатурой. Так вот даже там, нажимай хоть маленькие буквы, хоть большие - печатаются большие. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
ksili, Дык обожди. Ты что делаешь то вообще? Может решение совсем другое нужно. Раз пишешь под Mobile - если с гуем - то чисто на WinAPI или при промощи MFC?
|
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
||||
|
||||
| J0ker |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
потому, что форма insert'a которую вы используете, вставляет СТРОКУ а не символ правильное использование:
|
||||
|
|||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
чисто на WinAPI
Попробую WM_CHAR и WM_UNICHAR -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
вы путаете виртуальный код и код символа вам определенно надо ловить WM_CHAR объясняю как происходит процесс когда вы нажимаете клавишу, клавиатура выбрасывает код - т.н. скэн-код, его ловит драйвер и затем пересылает окну с фокусом ввода в виде WM_KEYDOWN - в нем присутствует скэн-код в lParam (который может различаться для одной и той-же клавиши - все зависит от производителя), и виртуальный код в wParam - который уже от производителя не зависит - это внутренний код ОС - это просто трансляция скэн-кодов в универсальный внутренний код ОС. Т.к. клавиша для строчной и заглавной буквы одна, то и виртуальный код (и скэн-код) тоже ОДИН и тот-же - эти коды просто определяют конкретную клавишу, а то, что виртуальный код совпадает с кодом СИМВОЛА заглавной буквы - просто СОВПАДЕНИЕ (намеренное конечно - так проще). Далее... Когда WM_KEYDOWN ловится обработчиком очереди сообщений (если вы конечно его не перекрыли ручками |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: нет Всего: 17 |
Т.е. WM_KEYDOWN перекрывать нежелательно? Оно у меня уже используется для обработки нажатий стрелок курсора, home, end и др непечатных клавиш. Они будут в WM_CHAR попадать? И ещё мне надо будет делать обработку одновременного нажатия Shift и стрелок. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |