Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2014, 14:30   #1
SPLER
Пользователь
 
Регистрация: 15.02.2014
Сообщений: 53
Вопрос Размер окна

Hello, Ребят, такой вопрос.
Как можно узнать размер окна процесса? Я так предполагаю без WinApi не обойтись, нашел пока только как расположение узнать, продолжу поиск, если узнаю раньше чем получу ответ, отпишусь с ответом. Но все же, прошу помощи, спасибо.
SPLER вне форума Ответить с цитированием
Старый 08.04.2014, 14:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как расположение узнать
По идее эта же функа и должна дать размер. Как расположение узнал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.04.2014, 15:23   #3
SPLER
Пользователь
 
Регистрация: 15.02.2014
Сообщений: 53
По умолчанию

Расположение узнал с помощью GetWindowRect, но как понял, с ее же помощью нельзя узнать размер окна, хотя.. может я и не прав. Но по крайней мере, у меня не получилось.
SPLER вне форума Ответить с цитированием
Старый 08.04.2014, 15:25   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а что по координатам вы не можете узнать размер?
GetWindowRect дает эту инфу.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.04.2014, 15:27   #5
SPLER
Пользователь
 
Регистрация: 15.02.2014
Сообщений: 53
По умолчанию

Хотя.. если подумать, можно попробовать так, узнать расположение границ окна, и методом вычисления путем вычитания из размеров всего экрана, получить размер окна. Надо попробовать, сейчас займусь, отпишусь.
SPLER вне форума Ответить с цитированием
Старый 08.04.2014, 16:16   #6
SPLER
Пользователь
 
Регистрация: 15.02.2014
Сообщений: 53
По умолчанию

Пепел Феникса, Вы правы.
Вот что вот мой пример, как получить размер окна:
Код:
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool GetWindowRect(IntPtr hwnd, out RECT lpRect);

        [StructLayout(LayoutKind.Sequential)]
        public struct RECT
        {
            public int Left;
            public int Top;
            public int Right;
            public int Bottom;
        }

        RECT rct;

         private void button1_Click(object sender, EventArgs e)
        {
            GetWindowRect(this.Handle, out rct);
            Point mP = (Point)Screen.PrimaryScreen.Bounds.Size;
            int mWidht, mHeight;
            int[] s = new int[4];

            s[0] = mP.X - rct.Left;
            s[1] = mP.X - rct.Right;
            mWidht = s[0] - s[1];

            s[2] = mP.Y - rct.Top;
            s[3] = mP.Y - rct.Bottom;
            mHeight = s[2] - s[3];

            MessageBox.Show("Ширина: " + mWidht.ToString()
                + Environment.NewLine
                + "Высота: " + mHeight.ToString());
        }
Поясню немножечко, на всякий случай.
По нажатию на кнопку "button1", получаем размер основного экрана, пишем значения в переменную типа Point, далее вычисление, думаю и так ясно что, куда, откуда вычитаем. Ну а после, выскакивает сообщение с размером окна. Как то так.

Последний раз редактировалось SPLER; 08.04.2014 в 17:07. Причина: Поправка.
SPLER вне форума Ответить с цитированием
Старый 08.04.2014, 16:24   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я надеюсь вы на себе самом только тренировались?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.04.2014, 16:37   #8
SPLER
Пользователь
 
Регистрация: 15.02.2014
Сообщений: 53
По умолчанию

Ага. А что не так?
SPLER вне форума Ответить с цитированием
Старый 08.04.2014, 17:57   #9
SPLER
Пользователь
 
Регистрация: 15.02.2014
Сообщений: 53
По умолчанию

Пепел Феникса, кажется понял о чем Вы говорили, поправил код:
Код:
private void button1_Click(object sender, EventArgs e)
        {
            GetWindowRect(this.Handle, out rct);
            int mWidht, mHeight;

            mWidht = rct.Right - rct.Left;
            mHeight = rct.Bottom - rct.Top;

            MessageBox.Show("Ширина: " + mWidht.ToString()
                + Environment.NewLine
                + "Высота: " + mHeight.ToString());
        }

Последний раз редактировалось SPLER; 09.04.2014 в 13:03.
SPLER вне форума Ответить с цитированием
Старый 09.04.2014, 13:46   #10
nedel
Пользователь
 
Регистрация: 09.04.2014
Сообщений: 18
По умолчанию

Если уж ищете размеры своего окна
Цитата:
GetWindowRect(this.Handle, out rct);
, то чем Вас не устраивает this.Width и this.Height?
nedel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить размер окна Pein95 Windows Forms 2 17.01.2013 20:56
Размер окна в С++ Krezol Помощь студентам 1 02.04.2010 20:53
Пропорциональный размер окна nazavrik Win Api 1 25.11.2009 01:28
Размер окна t3ns0r Общие вопросы C/C++ 2 29.11.2008 21:22
Размер окна в зависимости от размера окна Reverent JavaScript, Ajax 1 02.02.2008 15:49