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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перемещение окон 
V
    Опции темы
sig84
Дата 3.4.2007, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Люди
Подскажите, как сделать, чтобы окна не перемещались, а также не сворачивались и не открывались на весь экран (в том числе при двойном клике на кепшене)
Заранее благодарен
PM MAIL   Вверх
marcusmae
Дата 3.4.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


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

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



sig84, для этого нужно зарегистрировать для формы обработчики соответствующих оконных событий. Сделать это можно двумя способами.

Во-первых, можно работать напрямую с событиями Win API. Для этого override-ить функцию WndProc в Вашей форме, а в её теле по-своему обрабатывать возникшие события. Причём, каждое событие идентифициовать 16-ричным кодом, например :

Код

        protected override void WndProc(ref Message m)
        {
            // шестнадцатиричные коды сообщений 
            int WM_SYSCOMMAND = System.Convert.ToInt32("112",16);
            int SC_CLOSE = System.Convert.ToInt32("F060", 16);

            // ловим нужные нам сообщения
            if ((m.Msg == WM_SYSCOMMAND) && (m.WParam.ToInt32() == SC_CLOSE))
            {
                // нажата кнопка закрытия
                DialogResult dialogResult = MessageBox.Show("Вы действительно хотите нас покинуть?", "Подтверждение",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                if (dialogResult == DialogResult.Yes) this.Close();
                return;
            }

            // запускаем унаследованный стандартный обработчик для всех остальных сообщений
            base.WndProc(ref m);
        }


Коды сообщений можно найти в интернете или в справочнике. Среди них должен быть и соответствующий двойному клику по хедеру.

Во-вторых можно не напрягать мозг и воспользоваться встроенными событиями самой формы : Resize, ResizeBegin, ResizeEnd. Но здесь возможности несколько по-скромнее...

Это сообщение отредактировал(а) marcusmae - 3.4.2007, 22:01


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Naum
Дата 4.4.2007, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Насчет "не сворачивалась и не разворачивалась на весь экран" просто ставим у формы свойство FormBorderStyle в FixedToolWindow.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
sig84
Дата 5.4.2007, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



marcusmae, 
Спасибо за идею, покапаюсь - посмотрю  smile 


Naum, 
FormBorderStyle = FixedToolWindow не спасает от двойного клика по кепшену  smile 
PM MAIL   Вверх
Naum
Дата 5.4.2007, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Цитата(sig84 @  5.4.2007,  03:23 Найти цитируемый пост)
FormBorderStyle = FixedToolWindow не спасает от двойного клика по кепшену

Точно, а я и не знал. 


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
XavierElf
Дата 5.4.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 24.1.2007
Где: г. Тверь

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



А если аналогично через WndProc перехватывать WM_SYSCOMMAND с параметром SC_MAXIMIZE и SC_MINIMIZE? Может так поможет?

--------------------
Даешь открытые исходники!
PM MAIL ICQ   Вверх
sig84
Дата 6.4.2007, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо всем, похоже разобрался с двойным кликом по кепшену и ресайзом:
Код

ControlBox = false;
FormBorderStyle = FixedSingle;
MaximizeBox = false;
MinimixeBox = false;

Правда работает не во всех случаях (например, если форма изначально имеет свойство WindowState = Maximized), к тому же это как-то криво смотрится.
Остается нерешенным вопрос с перетаскиванием формы. smile 
PM MAIL   Вверх
sig84
Дата 6.4.2007, 04:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



"Кривое" отключение перетаскивания
Код

private void Form1_LocationChanged(object sender, EventArgs e)
        {
            this.Location = new System.Drawing.Point(0, 0);
        }

 smile 
Всем спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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