Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
질문>제목표시줄(타이틀바)사이즈 알기
어느 프로그램보면 활성화된 윈도우의 제목표시줄위에서 움직이는 아이콘이
돌아다니며 활성화가 없어지면 움직이는 아이콘은 떨어지고 또다시 활성화된 윈도우의
제목표시줄위에서 움직이는 아이콘을 보신적이 있을겁니다.
아마도 제목표시줄 즉, 활성 윈도우의 제목표시줄 핸들과 윈도우 사이즈를 알면 쉽게 될것같은데...
고수님들의 한수 부탁드립니다.
1
COMMENTS
최용일
•
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.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
한정섭
•
2000.04.12 05:23
2
COMMENTS
/
0
LIKES
도와주세요 - 웹서버로 자료 올리는 방법
이경수
•
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 04:44
1
COMMENTS
/
0
LIKES
CGI 궁금합니다...ㅜ.ㅜ
홍세비
•
2000.04.12 07:13
스타시커 wrote: > > 엔티 4.0에 웹사이트로 돌리는 웹서버입니다.. > IIS는 깔리지 않았구요... > ...
구구단 프로그램 좀
2000.04.12 04:43
0
COMMENTS
/
0
LIKES
분류먼저 해주시길 부탁드립니다.
paulyoon
2000.04.12 04:22
0
COMMENTS
/
0
LIKES
Re: 정말 원인을 못찾아서 질문을 올립니다. 다 찾아봤는데도..
가리봉
2000.04.12 04:14
0
COMMENTS
/
0
LIKES
이것좀: 2차 함수 그리기.
박재권
•
2000.04.12 03:50
1
COMMENTS
/
0
LIKES
부탁드립니다.[급하거든요.]
최용일
•
2000.04.12 04:03
안녕하세요. 최용일입니다. Log파일이라면 INI파일을 말하는 것입니니까? 좀 질문이 너무 막연하네요.. ...
타락천사
•
2000.04.12 03:35
1
COMMENTS
/
0
LIKES
ini 화일 읽고 쓰는 방법줌.....
홍세비
•
2000.04.12 07:19
타락천사 wrote: > 안녕하세여.. 타락임다.. 꾸벅.. > 한델에서 열쒸미 배우고 있는 초봅니다.. > 다중 ...
capia
•
2000.04.12 03:24
6
COMMENTS
/
0
LIKES
DBGrid에 순번(seq) 넣는 방법
좋은날
•
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 03:44
0
COMMENTS
/
0
LIKES
Re: 급합니다.제발[파일의 생성일을 알고 싶은데...]
나그네
•
2000.04.12 02:59
1
COMMENTS
/
0
LIKES
델파이 install 패킷 만들기좀 알켜줘요..
하얀까마귀
•
2000.04.13 02:57
안녕하세요 하얀까마귀 입니다.. 음... 델파이 설치프로그램을 만들어 주는 install shield라고 있잖아...
까마귀
•
2000.04.12 02:52
5
COMMENTS
/
0
LIKES
DBGrid에서의 갱신(?) 문제...
좋은날
•
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:43
0
COMMENTS
/
0
LIKES
TList 함수의 사용법??????
이수정
•
2000.04.12 02:36
3
COMMENTS
/
0
LIKES
페이지 컨트롤에서 페이지를 동적으로 생성하고 없앨 수 있습니까???
최용일
•
2000.04.12 02:45
안녕하세요. 최용일입니다. 페이지컨트롤에 삽입되는 탭쉬트에 PageColtrol이라는 속성이 있습니다. ...
이수정
•
2000.04.12 03:05
안녕하세요.. 뉴페이지해서 만들었는데... 페이지 삭제하는건 왜 없나요?? 황당~~~ 그리고,, for...
최용일
•
2000.04.12 03:16
안녕하세요. 최용일입니다. 페이지를 숨기려면 그 페이지의 PageControl을 nil로 해주세요. 숨기기 ...
이경수
2000.04.12 02:12
0
COMMENTS
/
0
LIKES
자동 업데이트
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
ORACLE에서 Table존재 여부 판단?...
이재식
•
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
TQuery를 동적으로 생성해서 사용하는 방법
이치형
•
2000.04.12 00:32
hee wrote: > 다음의 코드의 문제가 무엇인지 좀 봐주시겠어요? 한번은 되는데 다시 한번 버튼을 누르면 ...
김봉준
2000.04.12 00:12
0
COMMENTS
/
0
LIKES
클래스가 등록되지 않았습니다.. ^^;
심 해영
•
2000.04.12 00:06
1
COMMENTS
/
0
LIKES
질문>제목표시줄(타이틀바)사이즈 알기
어느 프로그램보면 활성화된 윈도우의 제목표시줄위에서 움직이는 아이콘이 돌아다니며 활성화가 없어지면 움직이는 아이콘은 떨어지고 또다시 활성화된 윈도우의 제목표시줄위에서 움직이는 아이콘을 보신적이 있을겁니다. 아마도 제목표...
최용일
•
2000.04.12 04:49
안녕하세요. 최용일입니다. 컨트롤의 영역은 크게 두가지로 나눌수 있는데 클라이언트역역과 비클라이언...
심 해영
2000/04/12 00:06
Views
349
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
컨트롤의 영역은 크게 두가지로 나눌수 있는데 클라이언트역역과 비클라이언트
영역이 있습니다. 폼을 예로들면 클라이언트 영역은 우리가 컨트롤들을 넣어주
는 곳입니다. 비클라이언트영역은 타이틀바, 시스템버튼, 크기조절프레임등이죠
그러니까 타이틀바도 컨트롤의 일부이며 어떤 핸들을 가지고 있지 않습니다.
타이틀바에 그림을 그리는 방법은 여러가지가 있는데 그중 제일 간단한 방법은
폼의 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.