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


Автор: a_n_y_a 23.04.18, 07:53
Простое диалоговое окно. В нем создается процесс для другой программы. находится ее окно и через найденный хендл происходит управление этим окном. Проект в VC++ 2012 года прилагаю. Создаю окно так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
            CString strCommandLine = _T("SetWinText.exe");  
            STARTUPINFO si = {0};
            PROCESS_INFORMATION pi;
            si.cb = sizeof (si);
            si.wShowWindow = SW_SHOW;
            si.dwFlags = STARTF_USESHOWWINDOW;
            if (::CreateProcess(NULL, (LPWSTR)(LPCTSTR)strCommandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
            {
                Sleep(1000);
                sw=NULL;
                if((sw=::FindWindow(NULL, _T("SetWinText")))==NULL)  AfxMessageBox(_T("Окно SetWinText не найдено"));
                else ::MoveWindow(sw, 0,0,500,500,true);
            }
            else {
                AfxMessageBox (_T("Не могу найти программу SetWinText."));
            };

Программа SetWinText.exe находится в папке проекта. Когда я после запуска проекта на выполнение и запуска программы SetWinText.exe проектом переключаюсь на другое окно, закрывающее оба этих окна, снова перехожу к главному окну проекта, появляется только главное окно, окно программы SetWinText.exe не появляется! Проверял, не приходит сообщение WM_SETFOCUS. Это сообщение приходит только после того, когда я жму кнопку ОК в окне главной программы. Тогда перед закрытием окна на мгновение появляется управляемое окно. Управляю окном так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    void CProvSetFocusDlg::OnSetFocus(CWnd* pOldWnd)
    {
        CDialogEx::OnSetFocus(pOldWnd);
     
        // TODO: Add your message handler code here
        ::SetForegroundWindow(sw);
    }

Что я делаю не правильно?
ProvSetFocus.rar (, : 88)

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