Тема: передача фокуса элементу окна
Есть модальный диалог от AcUiDialog. При появлении формы нужно передать фокус ввода эдиту. В InitDialog это делать бессмысленно, по-этому написал функцию OnShowWindow.
Еще на форме есть кнопка, нажав на которую мы попадаем в акад
void CPROneEditDlg::OnBnClickedCoords() { ads_point pSrc; ... BeginEditorCommand(); if (acedGetPoint(NULL,_T("\nТыкни точку:"),pSrc) != RTNORM) ... acedPostCommandPrompt(); CompleteEditorCommand(); }
Вот функция появления окна. Если закоментировать последние две строки (именно они передают фокус ввода), то все работает, но это не интересно.
void CMyDlg::OnShowWindow(BOOL bShow, UINT nStatus) { CAcUiDialog::OnShowWindow(bShow, nStatus); this->GotoDlgCtrl(GetDlgItem(IDC_EDIT_TEXT)); GetDlgItem(IDC_EDIT_TEXT)->SetCapture(); }
А вот если не коментировать, то все действия нада повторять дважды:
- два раза клацнуть на кнопку, чтоб выпать в акад,
- два раза, чтоб выбрать точку (при попадании в графическое окно, курсор стрелочка а не перекрестье и становится перекрестьем после повторного нажатия)
- потом появляется форма, а мышка исчезает. первый раз клацаем, чтоб появилась мышка, а потом на выход из формы
Как с этим бороться?
PS: OnAcadKeepFocus в классе диалога есть, а сам диалог вызывается из немодального.