Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Вниз

Манипулирование с заголовком формы   Найти похожие ветки 

 
МитяЙ2   (2003-07-07 04:31) [0]

Здравствуйте, Мастера.

Подскажите как убрать заголовок формы

....
потом что-то сделать
....

И вновь показать заголовок формы.


 
Evgeny V   (2003-07-07 05:33) [1]

x=GetWindowLong(Form1->Handle,GWL_STYLE);
x&=~WS_CAPTION;// убрать заголовок
SetWindowLong(Form1->Handle,GWL_STYLE,x);
x|=WS_CAPTION;// показать заголовок заголовок
SetWindowLong(Form1->Handle,GWL_STYLE,x);
код на си, x&=~WS_CAPTION; в паскле x:=x AND (NOT WS_CAPTION);,
x|=WS_CAPTION; в паскале x:=x OR WS_CAPTION; (паскаль знаю плохо, возможно расшифровал с ошибкой, извини)



 
Митяй2   (2003-07-07 07:31) [2]

Спасибо, попробую...


 
Митяй2   (2003-07-08 17:57) [3]

Попробовал, и вот что получилось:

При выполнении:
WindInfo:=GetWindowLong(Form1.Handle,GWL_STYLE);
WindInfo:=WindInfo AND NOT(WS_CAPTION);
SetWindowLong(Form1.Handle,GWL_STYLE,WindInfo);

Заголовок становиться ТОЛЬКО НЕДОСТУПНЫМ, но видим.
А так же окно не прорисовывается с краев, не прорисовка видна
в областях шириной слева и справа, и высотой сверху и снизу
всего ОДИН пиксел.

При выполнении:
WindInfo:=GetWindowLong(Form1.Handle,GWL_STYLE);
WindInfo:=WindInfo OR(WS_CAPTION);
SetWindowLong(Form1.Handle,GWL_STYLE,WindInfo);

Заголовок принимает первоначальные свойства.


 
Th   (2003-07-08 18:37) [4]


Form.BorderStyle:=bsNone;

...Do something...

Form.BorderStyle:=bsSizeable; // or other



Если надо, чтобы исчезал ТОЛЬКО заголовок, а sizeable border (thickframe в терминологии windows)оставался, то так:


Form.BorderStyle:=bsNone;
SetWindowLong(Handle,GWL_STYLE,GetWindowLong(Handle,GWL_STYLE)+WS_THICKFRAME);
SendMessage(Handle,CM_BORDERCHANGED,0,0);


...Do something...

Form.BorderStyle:=bsSizeable; // or other



To Митяй2
Попробуйте после вызова SetWindowLong делать следующее:
SendMessage(Handle,CM_BORDERCHANGED,0,0);

Мне помогло в свое время


 
Митяй2   (2003-07-09 05:39) [5]

Разобрался - нужно ещё менять высоту формы:

procedure TFmAuto.HideTitlebar;
var Save : Longint;
begin
if BorderStyle=bsNone then Exit;
Save:=GetWindowLong(Handle, GWL_STYLE);
if (Save and WS_CAPTION)=WS_CAPTION then
begin
case BorderStyle of
bsSingle, bsSizeable : SetWindowLong(Handle, GWL_STYLE, Save and (Not WS_CAPTION) or WS_BORDER);
bsDialog : SetWindowLong(Handle, GWL_STYLE, Save and (Not WS_CAPTION) or DS_MODALFRAME or WS_DLGFRAME);
end;
Height:=Height-GetSystemMetrics(SM_CYCAPTION);
Refresh;
End;
end;

procedure TFmAuto.ShowTitlebar;
var Save : Longint;
begin
if BorderStyle=bsNone then Exit;
Save:=GetWindowLong(Handle, GWL_STYLE);
if (Save and WS_CAPTION)<>WS_CAPTION then
begin
case BorderStyle of
bsSingle,bsSizeable : SetWindowLong(Handle, GWL_STYLE, Save or WS_CAPTION or WS_BORDER);
bsDialog : SetWindowLong(Handle, GWL_STYLE, Save or WS_CAPTION or DS_MODALFRAME or WS_DLGFRAME);
end;
( SM_CYCAPTION)
Разобрался - нужно ещё менять высоту формы:

procedure TFmAuto.HideTitlebar;
var Save : Longint;
begin
if BorderStyle=bsNone then Exit;
Save:=GetWindowLong(Handle, GWL_STYLE);
if (Save and WS_CAPTION)=WS_CAPTION then
begin
case BorderStyle of
bsSingle, bsSizeable : SetWindowLong(Handle, GWL_STYLE, Save and (Not WS_CAPTION) or WS_BORDER);
bsDialog : SetWindowLong(Handle, GWL_STYLE, Save and (Not WS_CAPTION) or DS_MODALFRAME or WS_DLGFRAME);
end;
Height:=Height-GetSystemMetrics(SM_CYCAPTION);
Refresh;
End;
end;

procedure TFmAuto.ShowTitlebar;
var Save : Longint;
begin
if BorderStyle=bsNone then Exit;
Save:=GetWindowLong(Handle, GWL_STYLE);
if (Save and WS_CAPTION)<>WS_CAPTION then
begin
case BorderStyle of
bsSingle,bsSizeable : SetWindowLong(Handle, GWL_STYLE, Save or WS_CAPTION or WS_BORDER);
bsDialog : SetWindowLong(Handle, GWL_STYLE, Save or WS_CAPTION or DS_MODALFRAME or WS_DLGFRAME);
end;
Height:=Height+getSystemMetrics(SM_CYCAPTION);
Refresh;
end;
end;



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
14-24618
jack128
2003-08-20 00:34
2003.09.08
Именинники 20 августа


1-24509
Subtle
2003-08-27 09:40
2003.09.08
Как сделать чтобы в проге открывался ассоциированный файл


1-24445
boband
2003-08-25 17:06
2003.09.08
Создание редактора свойств в Delphi 6


6-24589
KIE
2003-05-28 15:06
2003.09.08
Can t create new socket - Что это за такое?


11-24393
Admin_KOL
2002-06-27 17:34
2003.09.08
Старый форум





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский