Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > PreTranslateMessage sender


Автор: 17dufa 26.6.2009, 14:35
добрый день.
нужно отработать нажатие Enter в CComboBox, лежащем на диалоге.
решил это сделать в PreTranslateMessage:
Код

BOOL PreTranslateMessage(MSG* pMsg) 
{
    if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN  
        && GetFocus() == GetDescendantWindow(IDC_ANALYTACC407))
    {
.....

проблема в том, что проверка GetFocus() == GetDescendantWindow(IDC_ANALYTACC407) равна FALSE.
есть ли какие-нибудь альтернативные способы проверить, в котором окне находился фокус при нажатии клавиши? или в чем может быть косяк с указанным способом?

Автор: Andrey44 26.6.2009, 15:30
Код

if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN  
        && pMsg->hWnd==GetDlgItem(IDC_ANALYTACC407)->GetSafeHwnd())
    {
    }

Автор: Earnest 29.6.2009, 09:06
Если комбобокс редактируемый, то фокус не в нем, а его редакторе. Соответственно, код
Andrey44 тоже не поможет. 

Автор: 17dufa 29.6.2009, 12:31
Earnest, редактируемый. что в таком случае делать?

Автор: Earnest 29.6.2009, 12:58
Условие поменять, как-то так
GetFocus()->GetParent() == GetDlgItem (IDC_COMBOBOX)

Автор: 17dufa 29.6.2009, 13:20
Earnest, спасибо вопрос решен

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)