PMG

Форумы по созданию игр
Текущее время: 13 сен 2026 18:16

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: "Развернутый" режим
СообщениеДобавлено: 26 окт 2008 15:44 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 04 июл 2008 10:11
Сообщения: 144
Откуда: Питер
А как сделать "развернутый" режим? Ну, чтобы он изначально стоял, а не после нажатия на кнопку "развернуть"? Я пробовал изменять dwExStyle и dwStyle (кстати прикольный режим есть, где все слева направо поменяно - WS_DLGFRAME), но то что мне нужно уже есть, только как включить с самого начала этот режим?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 27 окт 2008 11:35 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Что значит "Развернутый" режим - не знаю такого.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 27 окт 2008 19:11 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 04 июл 2008 10:11
Сообщения: 144
Откуда: Питер
Ну в винде на окне есть 3 кнопки: "свернуть", "развернуть" и "закрыть". Мне нужно чтобы с самого начала былна включена кнопка "развернуть". Это и значит "развернутый" режим приложения (по моему мнению)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 27 окт 2008 20:23 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 04 июл 2008 10:11
Сообщения: 144
Откуда: Питер
У меня еще проблема. Мне нужно, чтобы после перемещения окна программы, я узнал координаты этого окошка (это мне нужно чтобы высчитать положение мыши относительно окна). Как это сделать? Или можно как-то еще можно узнать координаты мыши, относительно окна программы, а не относительно начала экрана?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 28 окт 2008 09:38 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Развернуть - это просто RESIZE. Должно приходить соответствующие сообщение от windows.
С мышкой сложнее. Надо смотреть в сторону winapi и функций - GetCursorPos, GetClientRect, MapWindowPoints, PtInRect, WindowFromPoint, GetWindowRect. Но лучше самому не заморачиваться, а найти подходящий пример с этими функциями.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 28 окт 2008 11:01 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 04 июл 2008 10:11
Сообщения: 144
Откуда: Питер
Вот нашел в msdn функцию Maximize Macro Action ( http://msdn.microsoft.com/en-us/library/bb177329.aspx ) - то что мне нужно. Но, когда пишу код
Код:
Maximize();
Он мне пишет, что нужны параметры т.к. это функция расширения не окна, а вектора (что мне не нужно).
А остальные функции просмотрел, полезная - GetWindowRect(hWnd,lpRect);
Так вот пишу код
Код:
case WM_LBUTTONUP:
      {              
         mouse.lbut=0;         
         GetWindowRect(hWnd,lpRect);
         return 0;
      }
Сначала я создал структуру lpRect, компилирую и зависает (после отпускания левой кнопки мыши), смотрю ошибку, оказывается (т.е. там так написано) hWnd не используется, но как это так, ведь hWnd - входной параметр функции LRESULT CALLBACK WndProc(...)? Не знаю что делать даже.
MagicWolf, может у тебя есть исходники?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 28 окт 2008 15:50 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
может не hWnd, а hwnd?
Maximize Macro Action - это макро для Microsoft Office Access 2007. В C++ это не вызвать ...

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 28 окт 2008 21:15 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 04 июл 2008 10:11
Сообщения: 144
Откуда: Питер
Не, ну я уж не совсем лох ;) Там точно hWnd. А ты писал про RESIZE, что это такое, я не нашел такую функцию?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 29 окт 2008 10:33 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Я тоже так с hwnd накалывался, не однократно.
Это не функция WM_SIZE - а сообщение от win. Вот код из NeHeGL.cpp:

Код:
      case WM_SIZE:                                       // Size Action Has Taken Place
         switch (wParam)                                    // Evaluate Size Action
         {
            case SIZE_MINIMIZED:                           // Was Window Minimized?
               window->isVisible = FALSE;                     // Set isVisible To False
            return 0;                                    // Return

            case SIZE_MAXIMIZED:                           // Was Window Maximized?
               window->isVisible = TRUE;                     // Set isVisible To True
               ReshapeGL (LOWORD (lParam), HIWORD (lParam));      // Reshape Window - LoWord=Width, HiWord=Height
            return 0;                                    // Return

            case SIZE_RESTORED:                              // Was Window Restored?
               window->isVisible = TRUE;                     // Set isVisible To True
               ReshapeGL (LOWORD (lParam), HIWORD (lParam));      // Reshape Window - LoWord=Width, HiWord=Height
            return 0;                                    // Return
         }
      break;                                             // Break


_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 29 окт 2008 15:43 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 04 июл 2008 10:11
Сообщения: 144
Откуда: Питер
О, круто :D Только не подскажешь, как сделать, чтобы SIZE_MAXIMIZED было включено сначала? Это было бы хорошо. А со вторым вопросом я разобрался так - просто при каждом перемещении окна я возвращаю его в начальное положение (т.е. его нельзя передвигать) :approve:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 29 окт 2008 16:47 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 04 июл 2008 10:11
Сообщения: 144
Откуда: Питер
У меня заработала функция GetWindowInfo :phones: Теперь проблема с перемещением окна полностью решена - его можно перемещать. Но у меня новый вопрос: как зафиксировать, что alt+tab нажаты. Я сделал вот так:
Код:
if(keys[9] && keys[18])
{
      keys[9]=FALSE;
      keys[18]=FALSE;
      minimized=1;            
}
но так minimized не становится равен 1. В чем тут дело?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 30 окт 2008 09:47 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Это уже сложно, тебе в dll надо делать hook, чтобы это отследить на системном уровне. Проще ловить сообщение WM_ACTIVATE:
Код:
case WM_ACTIVATE:
{
byte active=0, minimized=0;
   if ( LOWORD(wParam)==WA_ACTIVE || LOWORD(wParam)==WA_CLICKACTIVE ) {
          if ( flag_win_active==1 )
            break;
          active=1;
          flag_win_active=1;
          SetForegroundWindow(hwnd);
   }
   else
   {
      flag_win_active=0;
   }
   if ( HIWORD(wParam)!=0 )
   {
      flag_hide_window=minimized=1;
   }
   else   flag_hide_window=0;
   if ( win_active!=0 )
      win_active(active,minimized);
   break;
}

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 30 окт 2008 22:48 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 04 июл 2008 10:11
Сообщения: 144
Откуда: Питер
Блин, мне не очень понятен код. Например, что значит win_active(active,minimized); Эту функцию я нигде не нашел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 31 окт 2008 10:22 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
win_active(active,minimized) - это моя функция. Я взял пример из собственного кода.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: "Развернутый" режим
СообщениеДобавлено: 02 ноя 2008 14:55 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 04 июл 2008 10:11
Сообщения: 144
Откуда: Питер
О, у меня заработало. Вот мой код
Код:
case WM_ACTIVATE:
{         
      if (LOWORD(wParam)==WA_ACTIVE || LOWORD(wParam)==WA_CLICKACTIVE)
      {
         if (active==1)
            break;
         active=1;
         minimized=0;
         SetForegroundWindow(hWnd);         
      }
      else         
         active=0;             
      if ( HIWORD(wParam)!=0 || LOWORD(wParam)==WA_INACTIVE)           
         minimized=1;             
      return 0;
}

В твоем коде не хватало LOWORD(wParam)==WA_INACTIVE. Интересно, а у тебя работает этот код?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB