블로그 이미지
frostguy

카테고리

분류 전체보기 (48)
사진 (3)
Study (40)
IT (3)
Total143,127
Today14
Yesterday28
버튼의 속성에서 Notify 를 True 로 해 주거나

버튼 생성시 BS_NOTIFY 옵션을 주도록 하자!!

간단하지만 잊기 쉬운 것 중의 하나이다.
Posted by frostguy
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if (pMsg->message == WM_LBUTTONDOWN)
	{
		if (pMsg->hwnd ==  GetDlgItem(IDC_STATIC_TEXT)->GetSafeHwnd())
			AfxMessageBox("Left Button Down");
	}
	else if (pMsg->message == WM_RBUTTONDOWN)
	{
		if (pMsg->hwnd == GetDlgItem(IDC_STATIC_TEXT)->GetSafeHwnd())
			AfxMessageBox("Right Button Down");
	}
	return CDialog::PreTranslateMessage(pMsg);
}
Static Control 속성에서 Notify 가 TRUE 가 되어 있어야 한다.
Posted by frostguy
// 인쇄 다이얼로그 박스 출력
CPrintDialog printDlg(FALSE);
if (printDlg.DoModal() == IDCANCEL) return;

// 프린터 DC를 얻음
CDC dc;
dc.Attach(printDlg.GetPrinterDC());
dc.m_bPrinting = TRUE;

// 인쇄될 도큐먼트에 관한 정보 설정
CString strTitle;                           
strTitle.LoadString(AFX_IDS_APP_TITLE);
DOCINFO di;                       
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = strTitle;
    
// 도큐먼트 인쇄 시작
BOOL bPrintingOK = dc.StartDoc(&di); 

// CPrintInfo에 인쇄 관련 정보 설정
CPrintInfo Info;
//width = 4725, height 6792
Info.m_rectDraw.SetRect(500,500, dc.GetDeviceCaps(HORZRES)-500, dc.GetDeviceCaps(VERTRES)-500);
    
CRect           r;
int             nHeight;    

dc.SetMapMode(MM_TEXT);    
출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=227478&ref=227094
 // m_strEDIT는 프린트할 String 데이터가 들어있는 CString 변수 입니다.
char * p = m_strEDIT.GetBuffer(m_strEDIT.GetLength());
char *startAt = p;

//이 부분이 여러페이지 인쇄를 위해서 쓰이는 부분 같습니다.
 int totalDone = 0;    
 int lengthToGo = m_strEDIT.GetLength();

// 페이지를 인쇄하는 루프
for (UINT page = Info.GetMinPage(); bPrintingOK && totalDone < lengthToGo ; page++)
{
    // 페이지 인쇄 시작
   dc.StartPage(); 
    Info.m_nCurPage = page;
                
    r = Info.m_rectDraw;
    r.bottom = r.top;
    int i = 0;
    while (r.bottom < Info.m_rectDraw.bottom && totalDone + i < lengthToGo)
    {
            r.right = Info.m_rectDraw.right;            
            nHeight = dc.DrawText(startAt, i++, r, DT_CALCRECT|DT_WORDBREAK|DT_NOCLIP|DT_EXPANDTABS);
    }
    // go one back to assure correct height
    if (r.bottom >= Info.m_rectDraw.bottom)
    i--;
    //print page number
    CString strPageNum;
    strPageNum.Format("- %d -",Info.m_nCurPage);
    dc.DrawText(strPageNum,i, r, DT_CENTER|DT_SINGLELINE|DT_VCENTER);

    // print that text
    dc.DrawText(startAt, i, r, DT_WORDBREAK|DT_NOCLIP|DT_EXPANDTABS);
        
    // go to next page
    startAt += i;
    totalDone += i;        

   // 페이지 인쇄 완료
  bPrintingOK = (dc.EndPage() > 0); 
}
m_strEDIT.ReleaseBuffer();

// 도큐먼트 인쇄 종료
if (bPrintingOK) dc.EndDoc(); 
else dc.AbortDoc(); 

dc.Detach();
출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=227478&ref=227094
Posted by frostguy

최근에 달린 댓글

글 보관함