2011년 4월 8일 금요일

VC2008 MFC 인쇄관련 버그

Windows7 에서 VC2008 MFC Wizard 로 생성한 project 의 인쇄관련 버그



1. GetStockObject

void CView::OnPrint(CDC* pDC, CPrintInfo* pInfo) { } 함수에서

    pDC->SelectObject (GetStockObject(WHITE_BRUSH));

'SelectObject' 실행중 오류발생 -> API를 사용해서 해결했음

    ::SelectObject (pDC->m_hDC, GetStockObject(WHITE_BRUSH));



2. System menu

인쇄미리보기중 창의 우측 상단에 있는 최소, 최대, 닫기 버튼을 클릭하면 프로그램이 정지함

System menu 를 일시적으로 삭제함으로 회피했음

// 인쇄미리보기 시작시 System menu 를 삭제함
void CFrictionTesterView::OnBeginPrinting(CDC*, CPrintInfo*) {
    CMainFrame* mf = (CMainFrame*)AfxGetMainWnd();
    LONG style = GetWindowLong(mf->m_hWnd, GWL_STYLE);
    style &= ~WS_SYSMENU;
    SetWindowLong(mf->m_hWnd, GWL_STYLE, style);
}


// 인쇄미리보기 종료시 System menu 를 복구함
void CFrictionTesterView::OnEndPrinting(CDC*, CPrintInfo*) {
    CMainFrame* mf = (CMainFrame*)AfxGetMainWnd();
    LONG style = GetWindowLong(mf->m_hWnd, GWL_STYLE);
    style |= WS_SYSMENU;
    SetWindowLong(mf->m_hWnd, GWL_STYLE, style);
}

댓글 없음: