Здравствуйте, CEMb, Вы писали: CEM>Такой вопрос, в свою оконную процедуру прилетает WM_KEYDOWN (Ctrl key) + WM_CHAR (что-то странное) вместо WM_CUT/WM_COPY при нажатии Ctrl+X/Ctrl+C CEM>Что-то сходу не соображу, что сделать, чтобы в окно стали лететь сообщения? CEM>Пока писал, подумал: IsDialogMessage, возможно…
Интересно стало, глянул исходники винды (ну те старые которые утекли сто лет назад)
В общем EDIT контрол сам себе шлет эти сообщения. Банально в обработчике WM_KEYDOWN проверяет нажат ли Ctrl и ставит флаг, и дальше в обработчике WM_CHAR проверяет что если нажата комбинация Ctrl-X и прочее, то шлет сам себе WM_CUT
Так что это не в винду глобальная особенность встроена, а просто так сам EDIT контрол реализован. У себя сделай так же. Отлавливай эти нажатия и шли своему окну эти сообщения.
Здравствуйте, CEMb, Вы писали:
CEM>Такой вопрос, в свою оконную процедуру прилетает WM_KEYDOWN (Ctrl key) + WM_CHAR (что-то странное) вместо WM_CUT/WM_COPY при нажатии Ctrl+X/Ctrl+C
CEM>Что-то сходу не соображу, что сделать, чтобы в окно стали лететь сообщения? CEM>Пока писал, подумал: IsDialogMessage, возможно...
An application sends a WM_CUT message to an edit control or combo box to delete (cut) the current selection, if any, in the edit control and copy the deleted text to the clipboard in CF_TEXT format.
Может они приходят только в Edit и ComboBox автоматом, и только? Тогда можно предположить, что автоматом Винда определяет это по классу окна, а в других случаях (свой контрол, свой класс окна, со своим именем) не делает ничего!?!
Здравствуйте, CEMb, Вы писали:
CEM>Такой вопрос, в свою оконную процедуру прилетает WM_KEYDOWN (Ctrl key) + WM_CHAR (что-то странное) вместо WM_CUT/WM_COPY при нажатии Ctrl+X/Ctrl+C
Так там же написано, что это приложение шлет сообщение в контрол, а не винда. И edit на пару с combobox умеют их обрабатывать.
An application sends a WM_CUT message to an edit control or combo box to delete (cut) the current selection
Хотя нет, проверил, сообщение прилетает в EDIT от винды, странно.
Здравствуйте, CEMb, Вы писали:
CEM>Пока писал, подумал: IsDialogMessage, возможно...
Не, оно прилетает и в отдельно висящий Edit
C>Может они приходят только в Edit и ComboBox автоматом, и только? Тогда можно предположить, что автоматом Винда определяет это по классу окна, а в других случаях (свой контрол, свой класс окна, со своим именем) не делает ничего!?!
ES>Хотя нет, проверил, сообщение прилетает в EDIT от винды, странно.
Вот как-то по классу окна оно понимает, что вместо ctrl+c надо слать wm_copy
Возможно, надо что-то волшебное в RegisterClass сказать.
Re[2]: свой контрол и wm_cut/wm_copy/wm_clear/wm_paste
Здравствуйте, Evgeniy Skvortsov, Вы писали:
CEM>>Возможно, надо что-то волшебное в RegisterClass сказать.
ES>Не, все проще, EDIT эти сообщения сам себе шлет. Так что только руками. Документация не врет.
Ага, я чуть позже запостил, поэтому не увидел.
Про исходники винды я тоже уже подумал, но куда-то их потерял
Re[4]: свой контрол и wm_cut/wm_copy/wm_clear/wm_paste