Как сделать размер окна в windows больше чем текущие разрешение экрана?

В линуксе/маке это можно, а вот в виндовсе не дает так растянуть.
  • Вопрос задан
  • 14395 просмотров
Пригласить эксперта
Ответы на вопрос 8
pnick
@pnick
Телеком инженер
Ха! На самом деле.
Первое, что в голову приходит — отослать окну сообщение с изменениями размера. Помню, на Delphi такие утилиты писали.

SetWindowPos(findwindow(nil,'1.txt — Блокнот'),HWND_BOTTOM,1,1,20,20,SWP_nosize);

первый параметр — заголовок окна, с которым надо что-либо сделать ( в данном случае — передвинуть). Заголовок передается функцией «ловли» окна

findwindow(nil,'1.txt — Блокнот'), где 1.txt — Блокнот заголовок окна

Второй параметр — положение окно ( т.е. его Z-расположение ) он нам сейчас не нужен. Просто считайте, что он должен быть HWND_BOTTOM

Третий параметр — координыты окна по «Оси X» в пикселах.

Четвертый параметр — координыты окна по «Оси Y» в пикселах

(т.е. этими координмтами вы указываете куда двигать окно).

Пятый — размер окна по горизонтали

Шестой — размер окна по вертикали
Ответ написан
ertaquo
@ertaquo
В винде вроде бы нельзя установить слишком большой размер окна, как и разместить его сильно далеко за пределы видимости. Могу посоветовать использовать скроллинг.
Ответ написан
@s0rr0w
Если пошаманить с разрешениями экрана, можно выставить вариант, когда рабочий стол будет больше чем экран, и тогда можно смело растягивать окошко. Но это извратный способ.
Ответ написан
Комментировать
@edelweard
В качестве программного решения могу посоветовать AutoHotKey: www.autohotkey.com/
Это очень мощный и простой язык, который позволяет делать очень многое с клавиатурой, мышкой, окнами и элементами интерфейса в Windows.
Она умеет не только изменять размеры окна, может даже сделать окно программы эллипсом :)

Установить размеры окна можно командой www.autohotkey.com/docs/commands/WinMove.htm
Ответ написан
MTonly
@MTonly
Веб-разработчик с 2002 года
Посмотрите, как это сделано в Firefox — в развёрнутом состоянии он растягивает окно так, чтобы область отображения страницы заняла всё видимое пространство экрана по ширине.
Ответ написан
ncix
@ncix
Предприниматель
SetWindowPos не отработает просто так, проверено.

Чтобы окно растянулось, нужно ему поставить правильный стиль. Не помню как это в WinAPI, в Delphi это BorderStyle = bsNone. Короче окно без рамки и шапки. Плоский прямоугольник.
Тогда SetWindowPos растягивает как пожелаете
Ответ написан
@Airog
Только что решил данную проблему на C#. Решение основано на перехвате сообщения WM_GETMINMAXINFO:

        private const long WM_GETMINMAXINFO = 0x24;

        public struct POINTAPI
        {
            public int x;
            public int y;
        }

        public struct MINMAXINFO
        {
            public POINTAPI ptReserved;
            public POINTAPI ptMaxSize;
            public POINTAPI ptMaxPosition;
            public POINTAPI ptMinTrackSize;
            public POINTAPI ptMaxTrackSize;
        }
       
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            if (m.Msg == WM_GETMINMAXINFO)
            {
                MINMAXINFO mmi = (MINMAXINFO)m.GetLParam(typeof(MINMAXINFO));
                mmi.ptMinTrackSize.x = this.szFullScreen.Width;
                mmi.ptMinTrackSize.y = this.szFullScreen.Height;
                System.Runtime.InteropServices.Marshal.StructureToPtr(mmi, m.LParam, true);
            }
        }


перед тем как изменять размер окна, в szFullScreen заношу нужный размер окна.
Весь смысл решения в том, что мы указываем минимальный размер окна.
На С++ эта задача решается аналогичным способом
Ответ написан
Комментировать
GiMeSpace Desktop Extender разрешает задать размеры окна (в том числе и большие, чем разрешение экрана) правыми кликом по иконке в трее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы