Недавно столкнулся со следующей проблемой:
в приложении типа DialogBased есть две кнопки,
и нужно при нажатии на первую передать фокус на вторую.
Делаю следующим образом :
в обработчике нажатия первой кнопки —
m_SecondButton.SetFocus();
Происходит следующее: прямоугольник фокуса переходит
на вторую кнопку, но на самом деле фокуса на ней нет,
и где он находится — неизвестно (!!??).
При нажатии на enter праложение закрывается
(происходит onClose()).
Буду рад любым советам
21.04.03 15:48: Перенесено из 'C/C++'
Здравствуйте, lexer_lx, Вы писали:
_>При нажатии на enter праложение закрывается
_>(происходит onClose()).
_>Буду рад любым советам
Блокировка закрытия окна по escape и return.
Нужно переопределить ф-цию PreTranslateMessage
BOOL CTestAxGComDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN)
{
if(pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN)
{
return 0;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
Здравствуйте, lexer_lx, Вы писали:
_>Недавно столкнулся со следующей проблемой:
_>в приложении типа DialogBased есть две кнопки,
_>и нужно при нажатии на первую передать фокус на вторую.
_>Делаю следующим образом :
_>в обработчике нажатия первой кнопки —
_> m_SecondButton.SetFocus();
_>Происходит следующее: прямоугольник фокуса переходит
_>на вторую кнопку, но на самом деле фокуса на ней нет,
_>и где он находится — неизвестно (!!??).
_>При нажатии на enter праложение закрывается
_>(происходит onClose()).
_>Буду рад любым советам
MFC: GotoDlgCtrl(&m_SecondButton);
API: ::SendMessage(m_hWnd, WM_NEXTDLGCTL, (WPARAM)SecondButton.m_hWnd, 1L);