Здравствуйте, уважаемые
Столкнулся с такой проблеммой. В диалоговом окне создается RichEdit 2.0 контрол, нужно сделать обработку клавиш Ctrl+B (Bold font), и Ctrl+I (Italic font). Перехватываю сообщение WM_KEYDOWN через EN_MSGFILTER и в зависимости от нажатой комбинации клавиш заполняю структуру CHARFORMAT ну и вызываю EM_SETCHARFORMAT. И вот тут столкнулся с проблеммой: при нажатии комбинации Ctrl+I (которая должна просто сделать Italic шрифт ) в мой RichEdit контрол вставляется символ табуляции. Кто нибудь сталвивался с таким поведением? Как это можно обойти?
Спасибо.
12.03.10 12:43: Перенесено из 'C/C++'
Здравствуйте, dominik, Вы писали:
D>Здравствуйте, уважаемые
D>Столкнулся с такой проблеммой. В диалоговом окне создается RichEdit 2.0 контрол, нужно сделать обработку клавиш Ctrl+B (Bold font), и Ctrl+I (Italic font). Перехватываю сообщение WM_KEYDOWN через EN_MSGFILTER и в зависимости от нажатой комбинации клавиш заполняю структуру CHARFORMAT ну и вызываю EM_SETCHARFORMAT. И вот тут столкнулся с проблеммой: при нажатии комбинации Ctrl+I (которая должна просто сделать Italic шрифт ) в мой RichEdit контрол вставляется символ табуляции. Кто нибудь сталвивался с таким поведением? Как это можно обойти?
D>Спасибо.
Проблемма решена обработкой WM_CHAR с нажатым TAB_KEY
Здравствуйте, dominik, Вы писали:
D>Здравствуйте, уважаемые
D>Столкнулся с такой проблеммой. В диалоговом окне создается RichEdit 2.0 контрол, нужно сделать обработку клавиш Ctrl+B (Bold font), и Ctrl+I (Italic font). Перехватываю сообщение WM_KEYDOWN через EN_MSGFILTER и в зависимости от нажатой комбинации клавиш заполняю структуру CHARFORMAT ну и вызываю EM_SETCHARFORMAT. И вот тут столкнулся с проблеммой: при нажатии комбинации Ctrl+I (которая должна просто сделать Italic шрифт ) в мой RichEdit контрол вставляется символ табуляции. Кто нибудь сталвивался с таким поведением? Как это можно обойти?
D>Спасибо.
Может быть просто вставить в диалог Accelerators Table с Ctrl+B, Ctrl+I и перехватывать эти нажатия непосредственно в CDialog::PreTranslateMessage?