Главная страница
    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.007 c
14-24642
Pindos
2003-08-20 01:52
2003.09.08
Please Help!!! Задача по Hard Drive! тобишь, по жесткому диску!


14-24651
Ann
2003-08-20 09:40
2003.09.08
Информационные методы теории охоты


14-24703
Прохожий
2003-08-19 07:28
2003.09.08
Динамическое создание потоков


3-24322
SergeyV
2003-08-18 17:02
2003.09.08
Сложная выборка, прошу совета у Гуру


3-24359
VID
2003-08-17 15:06
2003.09.08
FIBDataSet, Blob-поле





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