У меня есть главное окно hwndMain
и многострочный Edit
текстовое поле:Detect CTRL + A в texbox
hwndEdit = CreateWindowEx(0, L"EDIT", NULL, WS_CHILD | WS_VISIBLE | ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL, 0, 0, 300, 200, hwndMain, 0, (HINSTANCE) GetWindowLong(hwndMain, GWL_HINSTANCE), NULL);
я использую это для обнаружения CTRL + в текстовом поле (потому, что как ни странно, это не доступны вне коробки):
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_KEYDOWN:
{
if (wParam == VK_CONTROL) // something here missing for detecting "A"
{
SendMessage(hwndEdit, EM_SETSEL, 0, -1); // select all ; this code works on its own, tested
}
...
к сожалению, ничего не происходит, когда я CTRL +A или CTRL + B или CTRL + ничего.
Что не так?
Примечание: Ok код для обнаружения А еще не хватает (я до сих пор не знаю, как это сделать), но код здесь должен работать на любой CTRL + ключ ...
Стандартный Edit контроль будет обрабатывать Ctrl + A уже. Не сломайте его, и вам не придется его переопределять. – IInspectable
Сообщение WM_KEYDOWN отправляется в элемент управления редактирования, а не в ваше окно. –
Обязательное чтение: [About Keyboard Input] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646267.aspx), если вы хотите переопределить реализацию по умолчанию (выбрав весь контент, в некоторых местах). – IInspectable