Форма на чистом винапи..
WS_CHILD|WS_VISIBLE|WS_BORDER|ES_AUTOHSCROLL,
272,451,98,18,hWnd,(HMENU)STATUS_ID,hInstance,0);
Появляется, работает, всё ок. но текст в этом окне не выделяется через CTRL+A. Неужели это самому в обработчике надо описывать? Если да, то есть готовый пример? Так не хочется с такой ерундой ковыряться..
Если что,думаю,что недолго обработку написать
@pixo $oft, не так давно сам писал чистое Win32-приложение, на 100% гарантирую, что дело не в этом. Мне кажется, здесь нужно не мудрить и просто сделать через RegisterHotKey().
Т.е. вы считаете,что все остальные приложения тоже регистрируют горячие клавиши для подобного рода операций?Почему же тогда Ctrl+C/X/V работают?И как тогда определить,для какого контрола произошло это событие?
Просто я думал,что для текстового поля это должна быть базовая комбинация,равно как и операции с выделенным текстом.Ведь в контекстном меню-то такой пункт есть!
Это ровным счётом ничего не значит. Ctrl+A не является стандартной комбинацией, в отличие от Ctrl+C или Ctrl+X. В некоторых программах Ctrl+A работает, но только благодаря заботе разработчиков о пользователе. Есть куча программ, где не работает. Позапускай, посмотри.
Скажем, Ctrl+A не работает в окне запуска программы по Win+R.
И точно,я невнимателен.Хотя сам такое нередко замечал
Значит,действительно надо регистрировать комбинацию или другими способами
Это в какой версии Windows? У меня всегда работал в XP, Vista, 2003 (+ R2), 2008 (+ R2), 7 (вне зависимости от разрядности).
АПД. Гоню, в XP и 2003 не работала вродебы, но я к сожалению не помню уже.
Просто я думал,что для текстового поля это должна быть базовая комбинация,равно как и операции с выделенным текстом.Ведь в контекстном меню-то такой пункт есть!
Насколько я знаю, для текстового поля базовым является системное сообщение (WM_COPY, WM_PASTE и т.п.), а не комбинация клавиш. А по поводу определения, для какого контрола произошло событие, - переопределите просто оконную процедуру для соответствующего контрола, в нее ж передается первым параметром дескриптор окна.
P.S. Единственное - я, наверное, был неправ, когда писал про RegisterHotKey(), эта функция регистрирует горячие клавиши в пределах всей системы (http://msdn.microsoft.com/en-us/library/ms646309(v=vs.85).aspx). Тут, скорее, нужно либо обрабатывать WM_KEYDOWN, либо посмотреть в сторону SetWindowsHookEx(). Я когда-то на C++ писал класс для удобства регистрации горячих клавиш через SetWindowsHookEx(), если кому интересно - могу поделиться.
Вот-вот,я о том же:) Собственно,поэтому и недоумевал,как с её помощью получить требуемый результат