CComboBox控件处于DropDown状态,此时如何知道在控件窗口外点击了鼠标左键?
我想在控件窗口外鼠标左键点击第一次时应用程序就能知道。
比如 Windows 资源管理器:
当地址栏处于下拉状态时,总要两次鼠标点击才可以选择一个文件。我想点击一次就可搞定
我想在控件窗口外鼠标左键点击第一次时应用程序就能知道。
比如 Windows 资源管理器:
当地址栏处于下拉状态时,总要两次鼠标点击才可以选择一个文件。我想点击一次就可搞定
在父窗口中响应COMBOBOX的ON_CBN_CLOSEUPS事件处理函数,加入如下代码:void CXXXXXXXDialog::OnCbnCloseupCombo1()
{
CPoint ptCurr;
GetCursorPos(&ptCurr);
ScreenToClient(&ptCurr);
CRect rtCombo;
GetDlgItem(IDC_COMBO1)->GetWindowRect(&rtCombo);
rtCombo.NormalizeRect();
if ( !rtCombo.PtInRect(ptCurr) )
{
CWnd* pChild = ChildWindowFromPoint(ptCurr);
if (pChild)
{
MapWindowPoints(pChild, &ptCurr, 1);
::SendMessage(pChild->m_hWnd, WM_LBUTTONDOWN, 0, MAKELPARAM(ptCurr.x, ptCurr.y));
}
}
}
CPoint ptCurr;
GetCursorPos(&ptCurr);
ScreenToClient(&ptCurr);
CWnd* pChild = ChildWindowFromPoint(ptCurr);
if (GetDlgItem(IDC_COMBO1) != pChild)
{
MapWindowPoints(pChild, &ptCurr, 1);
::SendMessage(pChild->m_hWnd, WM_LBUTTONDOWN, 0, MAKELPARAM(ptCurr.x, ptCurr.y));
}
用SetWindowsHookEx(WH_MOUSE, ...);终于可以完美搞定了,还是谢谢各位