Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > убить заголовок окна


Автор: z-END 27.3.2005, 16:18
сабж, чего "сказать" чужому окну чтобы у него пропал заголовок (т.е. чтоб окно стало BorderStyle=bsNone) и вообще можно-ли ?

Автор: RA 27.3.2005, 16:24
Заголовок это WS_Caption
Добавлено @ 16:33
используй для этого SetWindowLong

Автор: z-END 27.3.2005, 16:35
RAdmin уже лучше-)
Код

SendMessage (SomeHandle, WS_CAPTION, {а тут чего?},{и тут ?});

Автор: RA 27.3.2005, 16:48
Вот кокраз то что тебе нужно:

Код




procedure MakeBsNone;
var
  Style: Longint;
begin

  Style := GetWindowLong(Handle, GWL_STYLE);
  if (Style and WS_CAPTION) = WS_CAPTION then
  begin
    case BorderStyle of
      bsSingle,
      bsSizeable: SetWindowLong(Handle, GWL_STYLE, Style and
          (not (WS_CAPTION)) or WS_BORDER);
      bsDialog: SetWindowLong(Handle, GWL_STYLE, Style and
          (not (WS_CAPTION)) or DS_MODALFRAME or WS_DLGFRAME);
    end;
    Height := Height - GetSystemMetrics(SM_CYCAPTION);
    Refresh;
  end;
end;





Автор: z-END 27.3.2005, 17:06
RAdmin чето несовсем работает... Handle то не моего окна нужен на чужого.
т.е. BorderStyle мне не нужен. я просто делал:
Код

SetWindowLong (SomeHandle, GWL_STYLE, Style and (not (WS_CAPTION)) or DS_MODALFRAME or WS_DLGFRAME);

но пропадает тока рамка вокруг окна, заголовок остаетсяsmile
ЗЫ точнее почти везде нормально, а внекоторых нет (например Диспетчер задач)

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