Сбой SendMessage (F4) при отправке его в окно - PullRequest
0 голосов
/ 14 июня 2010

Работа с Visual Studio 6 (VC ++ 6.0) Я использую элемент управления датой ActiveX, который по умолчанию не отображается развернутым ( 3006216 ).В качестве альтернативы я пытаюсь отправить сообщение клавиатуры (F4) в мое окно, чтобы открыть элемент управления, но ничего не происходит, когда я делаю это ...

// try 1: use the standard window handle
LRESULT result = ::SendMessage(m_hWnd,VK_F4, 0, 0);
// try 2: use just use the SendMessage
result = SendMessage(VK_F4);

результат всегда равен 0 - что я могу сделатьпроверить / проверить отправку сообщения?

Спасибо большое за все ...

Olli

Ответы [ 2 ]

0 голосов
/ 14 июня 2010

Хорошо - есть два подхода к этому вопросу (спасибо за помощь, ребята!):

Первое: используйте ":: SendMessage" с правильным сообщением И правильным дескриптором:

::SendMessage(m_wndDatePicker.m_hWnd, WM_KEYDOWN, VK_F4, 0);

В качестве альтернативы используйте «SendInput»:

// important: set focus to control first    
m_wndDatePicker.SetFocus(); 

INPUT *key;

key = new INPUT;
key->type = INPUT_KEYBOARD;
key->ki.wVk = VK_F4;
key->ki.dwFlags = 0;
key->ki.time = 0;
key->ki.wScan = 0;
key->ki.dwExtraInfo = 0;

SendInput(1,key,sizeof(INPUT));
0 голосов
/ 14 июня 2010

VK_F4 - это код ключа, а не сообщение окна.Попробуйте это:

::SendMessage(m_hWnd, WM_KEYDOWN, VK_F4, 0);
::SendMessage(m_hWnd, WM_KEYUP, VK_F4, 0);
...