Конференция "WinAPI" » Запрет на изменение размеров чужого окна
 
  • Colombo © (18.09.14 21:27) [0]
    У чужого окна необходимо
    1-убрать рамку
    2-развернуть его во весь экран
    3-звпретить изменение размеров.
    Что было как будто программа в полноэкранном режиме.


    SetWindowLong(hw, GWL_STYLE, GetWindowLong(hw, GWL_STYLE) And $800000);
    ShowWindow(hw, SW_MAXIMIZE);



    Трудности с третьим пунктом.
    После выполнения первых двух, все хорошо, но сбрасывается разрешение внутри окна. При попытке его восстановить, размер самого окна меняется по вертикали, становится меньше и появляется рамка в нижней части.
  • junglecat (19.09.14 12:46) [1]
    а что такое "разрешение внутри окна"?
  • Colombo © (19.09.14 18:28) [2]
    Операции проводятся на игре и "разрешение внутри окна" это внутриигровое разрешение.
    Независимо от размеров окна игры, в ней самой можно выставить различные расширения. Если делаю все как написал выше, то это внутриигровое разрешение сбрасывается на меньшее (картинка становится "замыленной").
    При попытке его изменить, через настройки игры, как только захожу в видеонастройки, у окна игры появляется рамка.
    Получается замкнутый круг)
    Делаю окно игры максимального размера и без рамки, сбрасываются видеонастройки игры, меняю видеонастройки, сбрасываются настройки окна..
  • Rouse_ © (19.09.14 20:38) [3]
    Удалено модератором
  • Rouse_ © (19.09.14 20:41) [4]
    Удалено модератором
  • Colombo © (20.09.14 01:07) [5]
    Игра "мониторит" размеры окна и при изменении реагирует на это.
    Остается дело за малым)))) найти где и как...
  • junglecat (20.09.14 13:34) [6]
    > найти где и как...

    можно попробовать хуком типа WH_GETMESSAGE на сообщения типа WM_GETMINMAXINFO или WM_SIZE
  • Rouse_ © (20.09.14 16:59) [7]
    Нашел, то что вчера искал :)))
    Вот ссылочка: http://habrahabr.ru/post/133956/

    Ошибся я конечно, не на дельфе она написана и не нашим товарищем, но там полный исходный код и сама суть подхода видна.

    ЗЫ: оть зачем один хороший человек удалил посты другого хорошего человека? :))
  • Rouse_ © (20.09.14 17:04) [8]
    ЗЗЫ:  сама wndmode.dll правда как я понял без исходного кода поставляется, но по сути для решения задачи оно и не нужно.
  • Colombo © (20.09.14 19:33) [9]

    > Нашел, то что вчера искал :)))
    > Вот ссылочка: http://habrahabr.ru/post/133956/
    >

    Спасибо!
  • Colombo © (20.09.14 20:24) [10]
    На новых играх не работает.
  • Rouse_ © (20.09.14 21:01) [11]

    > Colombo ©   (20.09.14 20:24) [10]
    > На новых играх не работает.

    А это уже кстати сигнальчик автору данной библиотеки.
    Он как раз просил о таких нюансах его уведомлять.
  • Colombo © (20.09.14 21:23) [12]

    > Он как раз просил о таких нюансах его уведомлять.

    Там комментарий от 29 февраля 2012 в 00:10, как раз об этом.

    "Но надо отметить, что работать будет только с действительно старыми играми, которые используют ddraw. А более новые работают напрямую с D3D9!Direct3DCreate9, и там подменять придётся не столько функции, сколько целый интерфейс."

    Наверное просто растяну окно немного больше, спрятав рамку за экраном.
  • Rouse_ © (20.09.14 22:11) [13]

    > Наверное просто растяну окно немного больше, спрятав рамку
    > за экраном.

    Ну... тоже вариант :)
    Именно так и происходит скрытие окна в системе :)
 
Конференция "WinAPI" » Запрет на изменение размеров чужого окна
Есть новые Нет новых   [134427   +34][b:0][p:0.001]