안녕하세요..
저는 캡션이 없는 윈도우를 만들고 싶은데요...
그래서 아래와 같이 Create 이벤트에 적어 줬어요..
SetWindowLong(Handle, GWL_STYLE, not WS_CAPTION);
헌데..
실행된 윈도우의 어떤 이벤트도 발생이 되지 않습니다..
계속 띵~ 띵~ 이라는 벨소리만 나구요~
고수님들의 한 수 부탁~~~
미리 감사 드립니다.~
고맙습니다.
아래 답변해 주신 김영대님 정말 감사드립니다.
부디 행복하시길.~~~
> 안녕하세요..
> 저는 캡션이 없는 윈도우를 만들고 싶은데요...
> 그래서 아래와 같이 Create 이벤트에 적어 줬어요..
> SetWindowLong(Handle, GWL_STYLE, not WS_CAPTION);
> 헌데..
> 실행된 윈도우의 어떤 이벤트도 발생이 되지 않습니다..
> 계속 띵~ 띵~ 이라는 벨소리만 나구요~
> 고수님들의 한 수 부탁~~~
> 미리 감사 드립니다.~
> 고맙습니다.
SetWindowLong(Handle, GWL_STYLE, not WS_CAPTION);
위의 코드를
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and not WS_CAPTION);
처럼 바꾸어 보세요
원래 값에서 WS_CAPTION 만 제거해야 하는데 사용하신 코드는 다른 속성에도
영향을 미치게 됩니다
// 폼의 BorderStyle 프로퍼티를 bsNone으로 하면 Caption Bar는 없지만
// Not resizeable; no visible border line 이 됩니다
// 그래서 BorderStyle 프로퍼티를 bsSizeable 으로 두고
// 아래처럼 하시면 ReSize 가능한 Caption Bar 없는 폼이 됩니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
// GetWindowLong()는 명시한 윈도우의 속성(32bit값 attribute)을 리턴합니다
// 이 리턴된 값에 WS_CAPTION을 제거하고 다시 SetWindowLong()를 사용하여
// 윈도우의 속성을 WS_CAPTION을 제거한 값으로 변경합니다
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and not WS_CAPTION);
// Caption이 없으므로 폼의 클라이언트 영역을 폼전체 크기로 변경
ClientHeight := Height;
end;
end.