Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возможно ли создать Docking Window 
V
    Опции темы
izekia
Дата 5.12.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 5.12.2007

Репутация: нет
Всего: 3



Собственно суть в вопросе, есть приложение, могу ли я сделать его окно присоединяемым, и как?
PM MAIL   Вверх
1stain
Дата 6.12.2007, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



если ты хочешь присоединить окно к краю экрана - никаких проблем. В обработчике события Move формы выставляешь соответствующее значение Location ( X если присоединяешь к левому/правому краю, Y если присоединяешь к верхнему/нижнему краю)


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
izekia
Дата 6.12.2007, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 5.12.2007

Репутация: нет
Всего: 3



1stain, нет, мне было необходимо прицепить к определенному окну, написал простую библиотеку, так в качестве демо, потом надо будет доработать
так все нормально работает, единственная проблема с максимизацией, просто перерисовывается нехорошо.

А про Location - можно поподробнее, я просто не понял - не настолько хорошо разбираюсь с визуальными объектами.

и еще момент, можно как-то отловить событие максимизации до самой максимизации?
ResizeBegin на нее не реагирует как я понял, а Resize - это уже поздно

Добавлено @ 10:14
1stain, а, и еще момент - не относящийся к теме, почему если я выставляю размер в момент инициализации класса, то он изменяется при открытии формы?
Хотя похоже доку надо почитать ...

разобрался со второй проблемой, суть - последовательность инициализации формы

Это сообщение отредактировал(а) izekia - 6.12.2007, 10:25
PM MAIL   Вверх
1stain
Дата 6.12.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



пол-часа копания в MSDN плюс www.pinvoke.net родили такой вариант:
Код

    private const Int32 WM_GETMINMAXINFO = 0x24;

    [StructLayout(LayoutKind.Sequential)]
    public struct POINT
    {
        public int X;
        public int Y;

        public POINT(int x, int y)
        {
            this.X = x;
            this.Y = y;
        }
        public static implicit operator System.Drawing.Point(POINT p)
        {
            return new System.Drawing.Point(p.X, p.Y);
        }
        public static implicit operator POINT(System.Drawing.Point p)
        {
            return new POINT(p.X, p.Y);
        }
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct MINMAXINFO
    {
        public POINT ptReserved;
        public POINT ptMaxSize;
        public POINT ptMaxPosition;
        public POINT ptMinTrackSize;
        public POINT ptMaxTrackSize;
    }

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_GETMINMAXINFO)
        {
            MINMAXINFO mmi = (MINMAXINFO)Marshal.PtrToStructure(m.LParam, typeof(MINMAXINFO));
            mmi.ptMaxPosition = new POINT(100, 100);
            mmi.ptMaxSize = new POINT(500, 500);
            Marshal.StructureToPtr(mmi, m.LParam, false);
        }
        base.WndProc(ref m);
    }



--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
izekia
Дата 6.12.2007, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 5.12.2007

Репутация: нет
Всего: 3



1stain, спасибо за пример
многое из него было новым для меня
но проблема в следующем - я не могу унаследовать от кона к которому цепляюсь, то есть переопределить его поведение таким образом
PM MAIL   Вверх
1stain
Дата 6.12.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



навесить хук на окно, поведение которого надо отслеживать
Хуки в Win32

реализацию функций Win32 из-под C# можешь посмотреть здесь pinvoke.net


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
izekia
Дата 6.12.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 5.12.2007

Репутация: нет
Всего: 3



1stain, о, спасибо большое
PM MAIL   Вверх
1stain
Дата 6.12.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



izekia, не за что
отпишись, если получится - сам никогда такого не делал, интересно smile


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
izekia
Дата 6.12.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 5.12.2007

Репутация: нет
Всего: 3



1stain, хорошо
PM MAIL   Вверх
izekia
Дата 7.12.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 5.12.2007

Репутация: нет
Всего: 3



В общем не стал работать с хуками, пошел по более простому пути из-за нехватки времени, прицепил окно внутри текущего добавил немного прозрачности, в целом неплохо получилось
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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