Вывод меню с правым кликом мышки по CListBox'у.
От: DeDMakar  
Дата: 19.10.08 12:18
Оценка:
Поправлено форматирование текста. — 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: Перенесено из 'Декларативное программирование'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.