본문 바로가기

전체 글340

[MFC] class 구조와 몇가지... CView : 데이타의 화면 표시 담당 Invalidate()로 화면 갱신 -> 내부적으로 WM_PAINT를 발생시킴 CDocument : 데이타 처리 담당 CWinApp : 전체 프로그램의 제어 담당 CMainFrame : 윈도 전체 프레임의 제어 담당 CWnd : WM_ 으로 시작하는 메세지 처리 담당 CCmdTarget : WM_COMMAND 메세지 담당 (메뉴가 눌리거나 하는 경우 발생하는 메세지로 특별히 Event라고 불리운다.) 화면이 다시 그려져야 하는 경우 WM_PAINT 메세지가 발생한다. 이에 따라 OnPaint()/OnDraw() 함수가 호출되는데 CView 클래스에서 파생된 클래스는 OnDraw() 에서 처리하는 것이 바람직하다. OnPaint() 내부적으로 OnDraw() 함수를 .. 2008. 2. 6.
[MFC] 타이틀바와 외곽선이 없는 윈도우 만들기 LONG style; style = GetWindowLong( m_hWnd, GWL_STYLE ); style &= ~WS_CAPTION; style &= ~WS_SYSMENU; SetWindowLong( m_hWnd, GWL_STYLE, style ); CMainFrame 클래스의 OnCreate() 메서드에서 위 코드를 실행하면 WS_CAPTION(타이틀바와 보더), WS_SYSMENU(닫기/최소화/최대화 버튼) 등이 없는 윈도우를 만들 수 있다. 역시 CMainFrame 클래스의 PreCreateWindow() 메서드에서 cs.style = 0; cs.hMenu = NULL 을 넣어주면 메뉴까지 없는 윈도우가 생성된다. 2008. 2. 6.
[MFC] CDC/CClientDC CDC : 실행된 윈도우에 대한 모든 소유권을 갖으며 사용후 반드시 ReleaseDC를 해야한다. CClientDC : CDC의 subset 개념이며 ReleaseDC가 필요없다. CDC dc; CPen pen; pen.SelectObject( &dc ); pen이 dc 안에서만 동작하도록 설정/ 사용전 old object를 가지고 있다가 사용후 old를 반환 dc를 clientdc로 사용할 때 global로 clientdc를 잡은 경우 object의 주체를 알 수 없고 local로 잡을 경우 scope rule의 문제가 생긴다. CClientDc dc( this ); DCD MemDC; MemDC.CreateCompatibleDC( &dc ); DC(여기서는 MemDC)를 ClientDC 처럼 사용. .. 2008. 2. 6.
윈CE 5.0 PlatformBuilder에서 사용하는 디렉토리 약어 _PLATFORMROOT = \WINCE500\PLATFORM _PROJECTROOT = \WINCE500\PBWorkspaces\MyProject\WINCE500\BSP _PROJECTDDKROOT = \WINCE500\PBWorkspaces\MyProject\WINCE500\BSP\ddk _PROJECTOAKROOT = \WINCE500\PBWorkspaces\MyProject\WINCE500\BSP\oak _PROJECTSDKROOT = \WINCE500\PBWorkspaces\MyProject\WINCE500\BSP\sdk _PROJECTPUBLICROOT = _PROJECTROOT = \WINCE500\PBWorkspaces\MyProject\WINCE500\public _PUBLICROOT =.. 2008. 2. 6.