将SendMessage(F4)发送到窗口时失败

时间:2010-06-14 09:40:00

标签: c++ visual-c++ sendmessage

使用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 - 我该怎么做才能测试/验证消息发送?

非常感谢...

奥利

2 个答案:

答案 0 :(得分:0)

VK_F4是关键代码,而不是窗口消息。试试这个:

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

答案 1 :(得分:-1)

好的 - 在这个问题上有两种方法(感谢所有的帮助,伙计们!):

首先:使用带有正确消息的“:: 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));