Главная страница
    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
3-24319
Tahion2
2003-08-18 11:19
2003.09.08
Как в DBGridEh (EhLib) нарисовать в ячейке картинку?


14-24616
Jao
2003-08-17 17:12
2003.09.08
Нет бардаку на винте!!! Оставь свое мнение.


1-24429
yuliya
2003-08-28 07:36
2003.09.08
Текстовый файл


14-24640
Прохожий
2003-08-21 08:32
2003.09.08
---|Ветка была без названия|---


1-24479
Сан Саныч
2003-08-26 03:12
2003.09.08
Чайниковская проблема с Class Factory





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский