Поправлено форматирование текста. — SchweinDeBurg
У меня есть ЛистБох. На нем еще не выделенный Итем. С помощью правого клика мышки должно совершаться: 1)выделение Итема 2)вывод меню.
Я отлавливаю сообщение ON_MESSAGE(WM_CONTEXTMENU,OnPOPUPMenu) и сама функция:
LRESULT CWinDlg::OnPOPUPMenu(WPARAM wParam,LPARAM lParam)
{
if(GetDlgItem(IDC_LIST4)->m_hWnd==(HWND)wParam){
////1 способ нажатия левой кнопки мышки
INPUT aInput;
aInput.type = INPUT_MOUSE;
aInput.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
SendInput(1, &aInput,sizeof(aInput) );
INPUT bInput;
bInput.type = INPUT_MOUSE;
bInput.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1, &bInput,sizeof(bInput) );
CPoint pt;
GetCursorPos(&pt);
////2 способ нажатия левой кнопки мышки
mouse_event(MOUSEEVENTF_LEFTDOWN, pt.x, pt.y, 0, 0); //Click Down
mouse_event(MOUSEEVENTF_LEFTUP, pt.x, pt.y, 0, 0); //Click Up
////3 способ нажатия левой кнопки мышки
PostMessage(WM_LBUTTONDOWN,MK_LBUTTON,lParam);
PostMessage(WM_LBUTTONUP,MK_LBUTTON,lParam);
if (m_ListMultibox.GetCurSel()==LB_ERR ) // если в списке ничего не выбрано
{
AfxMessageBox("Select Item List Box"); // сообщить о ошибке
}
else // иначе, то есть что-то выбрано
{
m_PopupMenu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON
,(short)LOWORD(lParam),(short)HIWORD(lParam),this,0); //вывод меню
}
}
return TRUE;
}
Ошибка в том, что происходит толька левый клик. А меню не успевает раскрываться. Как сделать по другому выделение Итема?
19.10.08 18:02: Перенесено из 'Декларативное программирование'