Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Фокус в форме


Автор: stashe 22.5.2008, 10:55
Как назывется свойство, при котором фокус форме передается только если клик происходит по верхней области формы (шапки), а не по рабочей области??

Автор: marcusmae 23.5.2008, 00:17
stashe, такого свойства нет.

На сколько я знаю, окно не может прямо контролировать стандартную "шапку", потому что ею занимается система. Впрочем, приложение может вообще не показывать стандартную шапку и/или создать свой собственный заголовок и делать с ним что угодно, как, например, M$ Office 2007 со своей легендарной кнопкой Ribbon. В любом случае, всё, что может произойти с "шапкой" уловимо через http://www.autohotkey.com/docs/misc/SendMessageList.htm. По ссылке приведён некоторый список кодов сообщений. Если возможно их использовать для решения Ваших задач, то нужно будет перегрузить метод формы под названием WndProc, примерно так :

Код

const int WM_NCLBUTTONDOWN = 0x00A1;
const int HTCLOSE = 20;

protected override void WndProc(ref Message m)
{
if ( m.Msg == WM_NCLBUTTONDOWN &&
m.WParam.ToInt32() == HTCLOSE )
{
Console.WriteLine( "X pressed");
}
base.WndProc (ref m);
}


С помощью этой же перегрузки можно исследовать, какие сообщения проходят через обработчик при тех или иных действиях. В данном случае, например, словить WM_ACTIVATE и проанализировать координаты мыши относительно клиентской области окна. Может, можно проще : вместо WM_ACTIVATE использовать http://msdn.microsoft.com/en-us/library/system.windows.forms.control.gotfocus.aspx или http://msdn.microsoft.com/en-us/library/system.windows.forms.form.activated.aspx.

Автор: stashe 23.5.2008, 10:07
так в определенный момент в программе, изменить фокус можно только клацнув по загаловку формы, а не по любой ей области...хз в чем дело smile 

я отображаю форму с графиком, потом диалог выбора файла, в принципе и все...после этот глюк

Автор: marcusmae 24.5.2008, 18:03
stashe, код в студию.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)