1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Выдвинуть окно на самый верх

Тема в разделе "С и С++", создана пользователем artsb, 24 дек 2009.

  1. artsb

    artsb Гость

    Репутация:
    0
    Всем привет!
    Использую такой код, чтобы выдвинуть окно на самый верх и сделать его активным:
    Код:
     ShowWindow(Application->Handle, SW_SHOWNORMAL);
    ShowWindow(frm->Handle, SW_SHOW);
    SetForegroundWindow(frm->Handle);
    В висте (да в ХР, наверное) отлично работает, а вот в вин7 не хочет выдвигать окно вперёд, просто кнопка приложения мигает и всё.
    У кого-нибудь есть мысли по этому поводу?
     
  2. vital

    vital Больной Компом Детектед

    Репутация:
    0
    Регистрация:
    29 янв 2006
    Сообщения:
    2.432
    Симпатии:
    40
    Почитать последний msdn по этим ф-м?=)
     
  3. artsb

    artsb Гость

    Репутация:
    0
    Тоже вариант :) Завтра, действительно, гляну.
     
  4. vital

    vital Больной Компом Детектед

    Репутация:
    0
    Регистрация:
    29 янв 2006
    Сообщения:
    2.432
    Симпатии:
    40
    Отпишитесь здесь о результатах изысканий, пожалуйста. Мне вот тоже интересно)
     
  5. artsb

    artsb Гость

    Репутация:
    0
    Полазил на сайте MSDN и некоторых зарубежных сайтах и решил проблему!
    Вся беда в том, что функция SetForegroundWindow и ей подобные корректно отрабатывают только из активного процесса. А у меня была ситуация, что я отправляю сообщение из активного приложения в неактивное и уже из него пытаюсь "выдвинуть" окно.
    В общем, вот:
    Код:
    SetLastError(0);
    if(!CreateMutex(NULL, true, "CarInsurance"))
    return 1;
    else if(GetLastError() == ERROR_ALREADY_EXISTS) {
    void *window;
    window = FindWindow("TMainForm", NULL);
    if(window && (window = GetWindow(window, GW_OWNER))) {
    ShowWindow(window, SW_SHOWNORMAL);
    SetForegroundWindow(window);
    return 1;
    }
    }
     
Загрузка...

Поделиться этой страницей