본문 바로가기

프로그래밍162

MFC-도형 그리기 기본적으로 그리기를 제공하는 원이나, 사각형이 아닌 삼각형을 포함한 다각형을 그리고 싶을 때 어떻게 해야 하는지, 먼저 예제를 보자. //View::OnPaint LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB( 100, 100, 100 ); CPen NewPen; // 여기서 PS_JOIN_MITER가 추가 되었는데 // 이 외에도, ROUND, BEVEL이 존재. NewPen.CreatePen( PS_GEOMETRIC | PS_ENDCAP_FLAT | PS_JOIN_MITER, 20, &lb ); CPen* pOldPen = dc.SelectObject( &NewPen ); CBrush NewBrush( RGB( 0, 0, 192 ) ); CBrush* .. 2010. 5. 16.
MFC-선 그리기 이전 GDI개념에 대해 설명할때 간단하게 선의 속성을 잡아 주는 것을 보았다. 이번엔 여러개의 선을 그리고, 그 선에 따른 스타일 값에 따른 변화를 살짝 살펴 보자. WM_PAINT메시지를 추가 하고. //View::OnPaint // 특정 스타일을 기억하게 하기 위한 변수 LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB( 192, 192, 192 ); // 여러개의 팬을 만든다. CPen arNewPen[3]; // 팬을 사용 하였을 때, 이전 값을 저장하기 위해 CPen의 *변수 생성 CPen* pOldPen = NULL; // 각각의 팬의 속성을 지정해 준다. arNewPen[0].CreatePen( PS_GEOMETRIC | PS_SOLID | PS_.. 2010. 5. 16.
MFC-GDI의 개념 API에서 GetDC라던가, BeginPaint라던가, ReleaseDC, EndPaint에 대해서, CDC 클래스가 담당 하고 있다고 생각하면 딱히 GDI의 개념 자체는 바뀐게 없다. WM_PAINT에서는 화면에 출력, 가려진 부분이 생기면 다시 출력 하거나 그런 부분은 모두 똑같고, Pen이나 Brush에 대한 것도 CPen이나 CBrush 클래스에서 정보들을 가지고 있다. OldPen이나 OldBrush를 통해서 되돌아 오는 DC의 값을 저장해 두었다가, 출력이 끝나면 다시 이전 값으로 되돌리는 작업이라던가. BitMap을 출력할 때 MemDC를 사용해서 미리 그려 넣은 후 Dc간의 복사를 해준다거나 하는 것도 API의 GDI와 차이가 없다. 단지 그것이 클래스에서 관리하게 되었다는 것뿐? 일단 실.. 2010. 5. 16.
MFC-마우스 입력( TRACKMOUSEEVENT ) ...... 1시간동안 썻는데, 실수로 지워서 날라갔다..... 제..ㄴ........자..............ㅇ 다시 쓰자 orz 요점만 다시.............. 후우 잡설은 여까지 하고 TRACKMOUSEEVENT는 마우스 추적을 위한 기능, //View::OnMouseMove // m_bTrack은 View에 멤버변수(BOOL타입, 초기값 FALSE) if( m_bTrack == FALSE ) { TRACKMOUSEEVENT MouseEvent; ::ZeroMemory( &MouseEvent, sizeof( MouseEvent ) ); // 최초 변수 생성 후 ZeroMemory를 사용해 초기화 // cbSize에 sizeof를 사용해 크기 저장 MouseEvent.cbSize= sizeof.. 2010. 5. 16.
MFC-새로운 클래스 추가 하기 mfc에서 CWnd 클래스를 기본 클래스로 하는 새로운 클래스를 만드는 방법은 다음과 같다. 프로젝트에서 마우스 우 버튼을 사용해 클래스 추가. 그 후 MFC클래스 선택 후 추가 클래스 이름을 사용하고 베이스 클래스를 선택한다. 그 후 생성! 2010. 5. 16.
MFC-마우스입력( 드래그 & 드랍 ) 마우스 입력을 활용하여, 드래그 & 드랍의 기능을 구현해 보자. 또한 마우스가 윈도우에서 벗어 났을 때 어떻게 확인 해야 할지에 대해서도 하나씩 알아 보자. 기본 적으로 드래그 & 드랍을 생성하기 위해서는, 3가지의 WM메시지가 필요 하다.( 마우스 왼쪽 버튼을 사용한다고 하였을 때 ) 1. LBUTTONDOWN 2. MOUSEMOVE 3. LBUTTONUP 다음의 3가지 WM메시지를 메시지탭에서 추가한다. 기본적인 드래그 & 드랍의 구조는 마우스 왼쪽 버튼이 눌리면(LBUTTONDOWN) 그 위치에 있는 대상과 위치를 검사하여, 왼쪽 버튼이 눌려 있는 부분이 대상의 위치와 일치 한다면, 특정 플래그를 On(true)시키고, 마우스가 움직였을 때(MOUSEMOVE) 특정 플래그가 On(true)라면 마우.. 2010. 5. 16.