На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Не приходит WM_SETFOCUS при переключения окна. , Сначала перехожу к другому окну, потом возвращаюсь к исходному, WM_SETFOCUS не приходит.
    Простое диалоговое окно. В нем создается процесс для другой программы. находится ее окно и через найденный хендл происходит управление этим окном. Проект в VC++ 2012 года прилагаю. Создаю окно так:
    ExpandedWrap disabled
              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. Это сообщение приходит только после того, когда я жму кнопку ОК в окне главной программы. Тогда перед закрытием окна на мгновение появляется управляемое окно. Управляю окном так:
    ExpandedWrap disabled
      void CProvSetFocusDlg::OnSetFocus(CWnd* pOldWnd)
      {
          CDialogEx::OnSetFocus(pOldWnd);
       
          // TODO: Add your message handler code here
          ::SetForegroundWindow(sw);
      }

    Что я делаю не правильно?
    Прикреплённый файлПрикреплённый файлProvSetFocus.rar (145,48 Кбайт, скачиваний: 87)
    Сообщение отредактировано: a_n_y_a -
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0184 ]   [ 18 queries used ]   [ Generated: 19.04.24, 23:13 GMT ]