C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[77] [팁] 다양한 모양의 폼 만들기
이기주 [] 11419 읽음    2001-02-26 18:58
다양한 모양의 폼 만들기 입니다.

윈도우즈 프로그래밍시 사각형형태의 기본폼이 아닌 타원이라든지, 둥근 사각형이라든지
아니면 이상한 형태의 폼을 만들기 위해서는

RGN관련 API함수를 사용하면 됩니다.

1. 영역할당 함수
CreateEllipticRgn  : 타원형태의 영역
CreatePolygonRgn   : 여러개의 선들을 연결한 다각형 영역
CreateRectRgn      : 사각형 영역
CreateRoundRectRgn : 둥근모서리 사각형 영역
..

2. 영역병합 함수
CombineRgn         : 여러개의 영역을 AND,OR,XOR등의 논리연산으로 병합합니다.

3. 할당된 영역으로 등록하는 함수
ShowWindowsRgn

4. 그래픽 에디터로 위의 폼형태에 맞는 그림을 그려준다.

5. Form에 Image box를 추가하고 Align은 alClient로 설정하고
   Transferant는 True로 하여 이미지를 불러옵니다.

6. 실행

 

윈도우즈 미디어플레이어7.0을 보면 스킨선택이라는 옵션이 있을겁니다.
그 스킨선택을하면 여러가지 형태의 윈도우를 선택할 수 있습니다.
위의 방법은 바로 이러한 형태의 폼을 만드는데 사용할 수 있습니다.

아래는 가운데가 빈 고리모양의 폼과 내부에 원모양의 폼이 있고 두개를 좌우에 가느다란
사각형막대로 연결된 모양의 폼의 예입니다.
(Form1의 BorderStyle=bsNone)

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    HWND hRegion,hRegion1;

    hRegion1 = CreateEllipticRgn(0,0, Width, Height);
    hRegion = CreateEllipticRgn(20,20, Width-20, Height-20);
    CombineRgn(hRegion,hRegion1,hRegion,RGN_DIFF);

    hRegion1 = CreateEllipticRgn(30,30, Width-30, Height-30);
    CombineRgn(hRegion,hRegion1,hRegion,RGN_OR);

    hRegion1 = CreateRectRgn(0,Height/2-5, Width, Height/2+5);
    CombineRgn(hRegion,hRegion1,hRegion,RGN_OR);

    SetWindowRgn(Handle, hRegion, True);

    Brush->Style=bsClear;
}

void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
    ReleaseCapture();
    SendMessage(Handle, WM_SYSCOMMAND, 0xf012, 0);
}

void __fastcall TForm1::Image2Click(TObject *Sender)
{
    PostQuitMessage(0);
}

+ -

관련 글 리스트
77 [팁] 다양한 모양의 폼 만들기 이기주 11419 2001/02/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.