WM_CHAR и русские буквы

Тема в разделе "WASM.WIN32", создана пользователем firs, 22 мар 2005.

Статус темы:
Закрыта.
  1. firs

    firs New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2004
    Сообщения:
    11
    Адрес:
    Russia
    есть строка в анси каждый ее символ передается по WM_CHAR в эдит. так вот когда влючена руская раскладка то все нормально, а когда преключаешься на английский язык в эдит в ставляются каракозябры. Как исправить?
     
  2. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    можно подробнее, какая связь между раскладкой и строкой: или сначала строка вводится разными раскладками, или строка готовая, просто на разных языках? и какая ось?
     
  3. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    проверил:

    invoke SendDlgItemMessage,hWin,1002,WM_CHAR,0ffh,0

    вставляет "я", а если фф поменять на 61 - то "а" латинскую. функции анси.
     
  4. firs

    firs New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2004
    Сообщения:
    11
    Адрес:
    Russia
    ОС Windows XP. Строка готовая(получается из элемента TreeView).

    Код такой:

    while(*p) SendDlgItemMessage(hmw, IDC_EDIT1, WM_CHAR, *(p++), 0);

    Так вот если он выполняется когда включена русская раскладка клавиатуры, то вставляется строка, к примеру: "Группа(6)", а если включена английская раскладка, то: "A?oiia(6)".
     
  5. firs

    firs New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2004
    Сообщения:
    11
    Адрес:
    Russia
    Строка одна и та же только раскладка клавиатуры меняется и выполняется один и тот же код.
     
  6. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    а эдит анси или юникод? если юникод, так он может конвертировать код текущей "нажатой" клавиши из анси в юникод в соответствии с текущей раскладкой клавиатуры, вот ты и получаешь западноевропейский аналог кириллицы. может, лучше другим способом в эдит дописывать, через ЕМ_... ?
     
  7. firs

    firs New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2004
    Сообщения:
    11
    Адрес:
    Russia
    не подскажешь на какое конкретно EM_... смотреть?
     
  8. firs

    firs New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2004
    Сообщения:
    11
    Адрес:
    Russia
    EM_REPLACESEL! Заработало! Спасибо за помощь!
     
Статус темы:
Закрыта.