Q&A

  • 질문>제목표시줄(타이틀바)사이즈 알기
어느 프로그램보면 활성화된 윈도우의 제목표시줄위에서 움직이는 아이콘이

돌아다니며 활성화가 없어지면 움직이는 아이콘은 떨어지고 또다시 활성화된 윈도우의

제목표시줄위에서 움직이는 아이콘을 보신적이 있을겁니다.

아마도 제목표시줄 즉, 활성 윈도우의 제목표시줄 핸들과 윈도우 사이즈를 알면 쉽게 될것같은데...

고수님들의 한수 부탁드립니다.

1  COMMENTS
  • Profile
    최용일 2000.04.12 04:49
    안녕하세요. 최용일입니다.



    컨트롤의 영역은 크게 두가지로 나눌수 있는데 클라이언트역역과 비클라이언트



    영역이 있습니다. 폼을 예로들면 클라이언트 영역은 우리가 컨트롤들을 넣어주



    는 곳입니다. 비클라이언트영역은 타이틀바, 시스템버튼, 크기조절프레임등이죠



    그러니까 타이틀바도 컨트롤의 일부이며 어떤 핸들을 가지고 있지 않습니다.



    타이틀바에 그림을 그리는 방법은 여러가지가 있는데 그중 제일 간단한 방법은



    폼의 OnPaint이벤트에서 타이틀바에 그림을 그리는 것입니다. 여기에서 폼의



    캔버스를 이용할 수는 없습니다. 폼의 캔버스는 폼의 클라이언트 영역만을 제어



    하기때문에 폼전체를 제어하려면 직접 폼의 DC(Device Context)를 얻어서 API



    함수를 이용해서 그려주시면 됩니다. 계속해서 움직이게 하시려면 타이머를



    사용하시면 될것입니다. 이건 조금만 생각하시면 하실수 있을것입니다.



    타이틀바의 크기는 GetSystemMetrics란 API함수를 사용하시면 알 수 있습니다.



    FrameXSize := GetSystemMetrics(SM_CXFRAME);

    ButtonXSize := GetSystemMetrics(SM_CXSIZE);



    ^^ 항상 즐코하세요...



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls, ComCtrls, ImgList;



    type

    TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure FormPaint(Sender: TObject);

    private

    Bitmap: TBitmap;

    DC: HDC;

    public

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    procedure TForm1.FormCreate(Sender: TObject);

    begin

    // DC를 얻는다.

    DC := GetWindowDC(Handle);

    // 비트맵객체를 만들고 비트맵을 불러온다.

    Bitmap := TBitmap.Create;

    Bitmap.LoadFromFile('c:mybitmap.bmp');

    end;



    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

    begin

    // DC를 해제한다.

    ReleaseDC(Handle, DC);

    // 비트맵객체를 해제한다.

    Bitmap.Free;

    end;



    procedure TForm1.FormPaint(Sender: TObject);

    begin

    // 폼의 타이틀바에 비트맵을 그린다.

    // BitBlt함수 도움말을 참조하시고 적당한 위치에 그려주세요...

    BitBlt(DC, 100, 5, 16, 16, Bitmap.Canvas.Handle, 0, 0, SRCCOPY);

    end;



    end.



    • 이경수
      2000.04.12 05:30
      한정섭 wrote: > 너무 막막해서 고수님들의 도움을 청합니다. > > 파라독스DB를 이용하는 프로그램에서...
    • 한정섭
      2000.04.12 21:01
      이경수 wrote: > 한정섭 wrote: > > 너무 막막해서 고수님들의 도움을 청합니다. > > > > 파라독스DB...
    • 김형종
    • 2000.04.12 04:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경수
      2000.04.12 05:21
      var I, J : Integer; begin for I :=1 to 9 do begin for J := 1 to 9 do begin Memo1....
    • 홍세비
      2000.04.12 07:13
      스타시커 wrote: > > 엔티 4.0에 웹사이트로 돌리는 웹서버입니다.. > IIS는 깔리지 않았구요... > ...
    • 박재권
    • 2000.04.12 03:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.12 04:03
      안녕하세요. 최용일입니다. Log파일이라면 INI파일을 말하는 것입니니까? 좀 질문이 너무 막연하네요.. ...
    • 홍세비
      2000.04.12 07:19
      타락천사 wrote: > 안녕하세여.. 타락임다.. 꾸벅.. > 한델에서 열쒸미 배우고 있는 초봅니다.. > 다중 ...
    • capia
    • 2000.04.12 03:24
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 좋은날
      2000.04.15 02:47
      capia wrote: > DBGrid에 순번(seq) 넣는 방법 좀 알려줘요. > > StringGrid에 순번(seq) 넣는 방법처...
    • 이경수
      2000.04.12 05:35
      capia wrote: > DBGrid에 순번(seq) 넣는 방법 좀 알려줘요. > > StringGrid에 순번(seq) 넣는 방법처...
    • 류종택
      2000.04.12 03:33
      Calculated Field를 작성하시고.. OnCalcFields 이벤트에서 아래와 같이 하세요.. procedure TForm1.Ta...
    • 하얀까마귀
      2000.04.13 02:55
      안녕하세요 하얀까마귀 입니다. 음.. 전에 제가 테스트 안해보구 순번을 calcField에 넣으라고 답변을 ...
    • 류종택
      2000.04.13 05:02
      저는 예전에 사용하던 것이라 올린 답변입니다.. 다만 런타임에만 적용된다는 것이 문제지요.. (CalField...
    • 하얀까마귀
      2000.04.13 05:30
      안녕하세요 하얀까마귀 입니다. ----------------------------------------------------------- 음.. ...
    • 나그네
    • 2000.04.12 02:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.04.13 02:57
      안녕하세요 하얀까마귀 입니다.. 음... 델파이 설치프로그램을 만들어 주는 install shield라고 있잖아...
    • 까마귀
    • 2000.04.12 02:52
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 좋은날
      2000.04.15 03:09
      까마귀 wrote: > 안녕하세요. > 까마귀입니다. 바쁘게 지내시느라 다들 욕보십니다. > > 트랜잭션 문...
    • 이경수
      2000.04.12 05:45
      트랜잭션 처리는 비교적 너무 단순합니다. 아래의 소스를 참조 하세요,,,,,, 참고로 RequestLive 속성...
    • paulyoon
      2000.04.12 04:10
      까마귀 wrote:> 안녕하세요. > 까마귀입니다. 바쁘게 지내시느라 다들 욕보십니다. > > 트랜잭션...
    • 까마귀
      2000.04.14 11:03
      paulyoon wrote: > > > > 까마귀 wrote:> 안녕하세요. > > 까마귀입니다. 바쁘게 지내시느라 다들 ...
    • paulyoon
      2000.04.15 08:37
      까마귀 wrote: > paulyoon wrote: > > > > > > > > 까마귀 wrote:> 안녕하세요. > > > 까마귀입니...
    • 최용일
      2000.04.12 02:45
      안녕하세요. 최용일입니다. 페이지컨트롤에 삽입되는 탭쉬트에 PageColtrol이라는 속성이 있습니다. ...
    • 이수정
      2000.04.12 03:05
      안녕하세요.. 뉴페이지해서 만들었는데... 페이지 삭제하는건 왜 없나요?? 황당~~~ 그리고,, for...
    • 최용일
      2000.04.12 03:16
      안녕하세요. 최용일입니다. 페이지를 숨기려면 그 페이지의 PageControl을 nil로 해주세요. 숨기기 ...
    • ghost Lee
    • 2000.04.12 00:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.12 01:35
      안녕하세요. 최용일입니다. CSV형식의 문자열에서 각각의 필드 스트링을 얻는 함수입니다. 저도 CSV문자...
    • 유상민
    • 2000.04.12 00:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      2000.04.12 01:31
      유상민 wrote: > 오라클을 이용해 프로그래밍을 하는데, table이 있으면 table생성을 하지않고 없으면 생...
    • 유상민
      2000.04.12 03:48
      이재식 wrote: > 유상민 wrote: > > 오라클을 이용해 프로그래밍을 하는데, table이 있으면 table생성을 ...
    • hee
    • 2000.04.12 00:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이치형
      2000.04.12 00:32
      hee wrote: > 다음의 코드의 문제가 무엇인지 좀 봐주시겠어요? 한번은 되는데 다시 한번 버튼을 누르면 ...
    • 최용일
      2000.04.12 04:49
      안녕하세요. 최용일입니다. 컨트롤의 영역은 크게 두가지로 나눌수 있는데 클라이언트역역과 비클라이언...