Cum setez prin program focus-ul pe un anumit control, intr-un dialog?
Raspuns
O metoda des folosita este prin apelarea functiei CWnd::SetFocus.
Code: Select all
GetDlgItem(IDC_EDIT2)->SetFocus();
Se poate realiza acesta prin functii suplimentare sau inlocuind CWnd::SetFocus cu CDialog::GotoDlgCtrl.
Code: Select all
GotoDlgCtrl(GetDlgItem(IDC_BUTTON2));
Code: Select all
NextDlgCtrl();
- Daca se schimba focusul in OnInitDialog atunci trebuie intors FALSE.
Code: Select all
BOOL CMyDialog::OnInitDialog() { //... GotoDlgCtrl(GetDlgItem(IDC_EDIT2)); return FALSE; // the focus has been programmatically set }
- CDialog::GotoDlgCtrl, CDialog::NextDlgCtrl si CDialog::PrevDlgCtrl trimit mesajul WM_NEXTDLGCTL cu SendMessage. In unele cazuri, ar fi de preferat postarea mesajului WM_NEXTDLGCTL (folosind PostMessage in loc de SendMessage).
Code: Select all
HWND hWndCtrl = ::GetDlgItem(m_hWnd, IDC_EDIT2); PostMessage(WM_NEXTDLGCTL, (WPARAM)hWndCtrl, (LPARAM)TRUE);
<< Back to MFC index