Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FullMode <> WindowMode (Окно во весь экран), Проблемы, когда делаешь программе SW_HID 
:(
    Опции темы
MuForum
Дата 1.9.2007, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев

Репутация: 1
Всего: 4



Добрый день!
Работаю на "Borland C++ Builder 6.0".
Задача: При нажатие на клавишу "F12" (0x7b) скрывать/раскрывать окно. (Перехват я сделал, сдесь проблем нету)
Проблема: Проблема заключается в том, Что после скрывания окна, если кликаешь в любое место на рабочем столе, то тутже окно разворачивается.

P.S. -> Разворачивается окно из-за того, что оно остается активным(Моё мнение). От сюда следует, что надо как-то при сворачивание сделать окно не активным.

Код

...
    else if(p->vkCode == 0x7B) // if have pressed button "F12"
    {
     switch(BM)
     {
      case 0: ShowWindow(hWnd2,SW_HIDE); BM=2; break;
      case 2: ShowWindow(hWnd2,SW_SHOW); BM=0; break;
      default: break;
     }
    }
...


Это сообщение отредактировал(а) MuForum - 1.9.2007, 14:09


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
MuForum
Дата 3.9.2007, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев

Репутация: 1
Всего: 4



# for all - Ну более немение разобрался со своей проблемой, но полюбому не выходит.

Перелапатил куча инфы с интернета и как передать фокус клавиатуры другому окну я нашел, а вот как передать фокус мыши другому окну не нашел!


Вопрос: Как передать фокус мыши другому окну?

Код

       ShowWindow(hWnd2,SW_HIDE); // Скрываем окно игры.
       hWnd3 = GetDesktopWindow(); // Извлекаем хендел 
       SetForegroundWindow(hWnd3); // Слегка повысим приоритет.
       SetActiveWindow(hWnd3); // Устанавливаем окно активным.
       SetFocus(hWnd3); // Установить фокус клавиатуры на наше окно.
       а вот тут надо как-то передать фокус мыши!


Достаточно много инфы перечитал по поводу мыши и работы сней, читал о перехвате через хук, "WH_MOUSE" и многое другое, но нигде не смог найти именно как передать фокус другому окну, так как мне надо именно это сделать!


P.S. -> Прошу подсказать или хоть направить, куда рыть, так как уже честно говоря устал, скачал больше 7 WinApi справочников(Только один из них нормальный оказался).


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
MuForum
Дата 3.9.2007, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев

Репутация: 1
Всего: 4



# for all - Проблема оказалась в другом, чё-то сразу я не догнал.
- Если запускать сразу игру в режиме FullScreen, то затем когда я через свою программу меняю формат на WindowMode и сворачиваю игру, то кликнув в любое место вне диапазона окна игры, окно игры разворачивает, а если сделать так два раза то из игры выкидывает.

- Теперь у меня возник вопрос по существу, что мне теперь делать?
- Проблема оказывается в том, что даже если переделать формат окна из FullScreen в WindowMode, затем свернуть окно "ShowWindow(hWnd2,SW_HIDE);", то кликнув в любое место не в окна, игру разворачивает, а затем выкидывает из игры!


Вопрос: Что можно придумать?
- Один парень три года назад в своей программе как-то это осуществил, но он нехочет даже подсказать, в какую сторону копать.

Код

...
    else if(p->vkCode == 0x7B && IsWindow(hWnd2)) // if have pressed button "F12"
    {
     if(fullmode2==true)
     {
      if(IsWindowVisible(hWnd2)==true)
      {
       ShowWindow(hWnd2,SW_HIDE);
       hWnd3 = GetDesktopWindow();
       SetActiveWindow(hWnd3);
       SetForegroundWindow(hWnd3);
       SetFocus(hWnd3);
       ShowWindow(hWnd3,SW_SHOW);
      }
      else
      {
       ShowWindow(hWnd2,SW_SHOW);
       SetForegroundWindow(hWnd2);
       SetFocus(hWnd2);
      }
     }
    }
...



P.S. -> С Get/SetWindowLong(hWnd, GWL_EXSTYLE/GWL_STYLE) работал, не помогло =(

Это сообщение отредактировал(а) MuForum - 3.9.2007, 22:50


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.