Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.252.140] |
|
Сообщ.
#1
,
|
|
|
Простое диалоговое окно. В нем создается процесс для другой программы. находится ее окно и через найденный хендл происходит управление этим окном. Проект в VC++ 2012 года прилагаю. Создаю окно так:
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. Это сообщение приходит только после того, когда я жму кнопку ОК в окне главной программы. Тогда перед закрытием окна на мгновение появляется управляемое окно. Управляю окном так: void CProvSetFocusDlg::OnSetFocus(CWnd* pOldWnd) { CDialogEx::OnSetFocus(pOldWnd); // TODO: Add your message handler code here ::SetForegroundWindow(sw); } Что я делаю не правильно? Прикреплённый файлProvSetFocus.rar (145,48 Кбайт, скачиваний: 87) |