랭귀지/MFC
-
GDI+ 사용하기랭귀지/MFC 2012. 5. 15. 17:56
더블버퍼링용 SmartMemory Class class SmartMemoryDC { public: CDCm_MemDC; CBitmapm_Bitmap, *m_OldBitmap; SmartMemoryDC( CDC* pDC, CRect& rect ) { m_MemDC.CreateCompatibleDC( pDC ); m_Bitmap.CreateCompatibleBitmap( pDC, rect.Width(), rect.Height() ); m_OldBitmap = m_MemDC.SelectObject( &m_Bitmap ); } ~SmartMemoryDC(){ m_MemDC.SelectObject( m_OldBitmap ); } CDC* operator()(){ return &m_MemDC; } CDC* oper..
-
쓸대없이 RECT로 버튼 그리기랭귀지/MFC 2011. 10. 11. 16:06
CRect increaseTempRect(increaseButtonRect); increaseTempRect += CRect(1, 1, 1, 1); dc.Rectangle(&increaseTempRect); dc.FillSolidRect(&increaseButtonRect, ::GetSysColor(COLOR_BTNFACE)); if (increaseButtonClicked){ dc.Draw3dRect(increaseButtonRect, ::GetSysColor(COLOR_3DSHADOW), ::GetSysColor(COLOR_3DLIGHT)); }else{ dc.Draw3dRect(increaseButtonRect, ::GetSysColor(COLOR_3DLIGHT), ::GetSysColor(COLO..
-
다각형 그리기랭귀지/MFC 2011. 10. 4. 16:14
radius = 200; polygons = 3; width = 1; center.x = 300; center.y = 300; void CRectangleView::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 여기에 메시지 처리기 코드를 추가합니다. // 그리기 메시지에 대해서는 CView::OnPaint()을(를) 호출하지 마십시오. CPen pen(PS_SOLID, width, RGB(0, 0, 255)); CPen *OldPen = dc.SelectObject(&pen); double omega; if(polygons % 2 == 0){ omega = M_PI/polygons; } else{ omega = 0; } d..
-
변경된 부분만 갱신 시켜주는 PatBlt랭귀지/MFC 2008. 11. 20. 12:23
BOOL CMapEditView::EraseBackground(CDC* pDC) { CBrush l_brush(RGB(0, 0, 255)); CBrush *old_brush = pDC->SelectObject(&l_brush); CRect rt; pDC->GetClipBox(&rt); //실제 갱신되는 영역을 구한다. pDC->PatBlt(rt.left, rt.top, rt.Width(), rt.Height(), PATCOPY); pDC->SelectObject(old_brush); return TRUE; } MFC는 메세지를 처리하기전에 SetClipBox를 해놓기 때문에 GetClipBox를 호출하여 갱신된 부분의 영역을 알 수 있다.
-
Document / View 구조 고려사항랭귀지/MFC 2008. 11. 20. 10:35
문서 / 뷰 구조를 이용하기 위한 조건 - 하나의 프레임, 문서 및 뷰는 반드시 서로 연결되어 있어야 한다. - 하나의 문서에는 여러 개의 뷰가 연결될 수 있다. - 하나의 문서에는 최소한 하나의 뷰가 연결되어야 한다. - 프레임, 문서 및 뷰 객체들은 상호간의 포인팅이 가능해야 한다. //////////////////////////////////////////////////// 뷰 클래스에서 문서 클래스 객체의 포인터 얻기 - CView클래스에 정의되어 있는 GetDocument함수를 이용한다. #ifndef _DEBUG // debug version in sam1View.cpp inline Csam1Doc* Csam1View::GetDocument() { return (Csam1Doc*)m_pDocu..