오랫만에 개발 관련 글을 포스팅하네요,,
제가 예전에 했던 프로젝트중에 화면에 작은 사각형들이 맵처럼 그려지는 모듈을 구현했던적이 있었습니다.
이 기능을 구현하기 위한 방법은 여러가지입니다.
첫번째는 CDC의 Rectangle로 OnDraw(OnPaint)에서 그리는 방법입니다. 이방법은 단순하기는 하나 매번 변경되어야 하거나 작은 사각형이 어떤 정보를 포함하고 있어야 할때는 문제가 발생하게 됩니다.
두번째는 CStatic 객체를 상속받아서 새로운 사각형 객체를 만드는 방법입니다. 이렇게 하면 객체라서 관리하기도 쉬워지고 단순히 사각형 정보외에 다양한 정보를 추가할수 있습니다.
해당 모듈이 어떤기능을 수행하느냐에 따라서 구현방법이 달라지겠지만 저는 두번째 방법을 설명하겠습니다.
1. CStatic을 상속받아서 새로운 클래스를 만든다.
2. WM_ERASEBKGND의 이벤트 핸들러인 OnEraseBkgnd() 함수를 만들어서 FLASE를 리턴해서 배경을 지운다.
3. 색상을 바꿀수 있게 하려면 COLORREF 멤버변수를 만들고 값을 변경할수 있는 멤버변수를 만들면 됩니다.
4. WM_PAINT의 이벤트 핸들러인 OnPaint 에 배경을 브러쉬로 칠하는 코드를 작성한다.
5. 사각형을 그릴 다이얼로그에서 CStatic의 인스턴스를 생성하고 Create 함수를 이용하여 동적으로 생성해준다.
다음은 CStatic을 상속받아 만든 CSquare 소스입니다.
그 다음은 CSquare 클래스의 인스턴스를 생성하고 Create해주는 소스입니다.
Create할때 위치는 적당히 넣어주시면 됩니다. 그리고 저는 동적으로 생성되는 CSquare객체를 관리할필요가 있어서 List에 추가해주었습니다.
말로 복잡하게 설명했지만 구현은 쉽습니다. ^^
'Dev > Programming' 카테고리의 다른 글
| [MFC] CTreeCtrl의 각 아이템 Height 조절 (0) | 2009/09/22 |
|---|---|
| 포인터에 대해서 어떻게 생각하나요? (2) | 2009/07/09 |
| [MFC] 사각형 객체화 (0) | 2009/05/21 |
| [C#] Console, WindowForm 프로젝트에서 System.Web 사용 (0) | 2008/10/12 |
| 원격 데스크탑 클라이언트 콘솔모드 변경 (1) | 2008/10/01 |
| [JAVA] 리눅스에서 JDK & Eclipse 설치하기 (0) | 2008/07/08 |
댓글을 달아 주세요