Q&A

  • Caption 날리기~
안녕하세요..

저는 캡션이 없는 윈도우를 만들고 싶은데요...

그래서 아래와 같이 Create 이벤트에 적어 줬어요..

SetWindowLong(Handle, GWL_STYLE, not WS_CAPTION);

헌데..

실행된 윈도우의 어떤 이벤트도 발생이 되지 않습니다..

계속 띵~ 띵~ 이라는 벨소리만 나구요~

고수님들의 한 수 부탁~~~

미리 감사 드립니다.~

고맙습니다.





아래 답변해 주신 김영대님 정말 감사드립니다.

부디 행복하시길.~~~

1  COMMENTS
  • Profile
    김영대 1999.10.05 20:45
    최연식 wrote:

    > 안녕하세요..

    > 저는 캡션이 없는 윈도우를 만들고 싶은데요...

    > 그래서 아래와 같이 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.