通用对话框
1.打开文件对话框
1 void CCommomView::OnDialogOpenfiledlg() 2 { 3 CFileDialog fileDlg(TRUE); 4 //过滤字符串,过滤字符串的格式:由多个字串组成,每个字串由两部分组成,第一部分是 5 //过滤器的字面说明,如"Text files(*.txt)",第二部分是用于过滤的匹配字符串,如"*.txt", 6 //子串的两部分用"\0"或"|"分隔开.最后两个字符必须是两个连续的"\0"或"||" 7 fileDlg.m_ofn.lpstrFilter = _T("Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0"); 8 fileDlg.m_ofn.lpstrTitle = _T("打开文件"); 9 char szBuf[20]; 10 memset(szBuf, 0, 20); 11 if (fileDlg.DoModal() == IDOK) 12 { 13 CFile file(fileDlg.m_ofn.lpstrFile, CFile::modeRead); 14 file.Read(szBuf, 20); 15 file.Close(); 16 AfxMessageBox(LPCTSTR(szBuf)); 17 } 18 }
2.保存文件对话框
1 void CCommomView::OnDialogSavefiledialog() 2 { 3 CFileDialog fileDlg(FALSE); 4 fileDlg.m_ofn.lpstrFilter = _T("Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0"); 5 fileDlg.m_ofn.lpstrTitle = _T("保存文件"); 6 char szBuf[20] = "利用对话框"; 7 if (fileDlg.DoModal() == IDOK) 8 { 9 CFile file(fileDlg.m_ofn.lpstrFile, CFile::modeCreate | CFile::modeWrite); 10 file.Write(szBuf, strlen(szBuf)); 11 file.Close(); 12 AfxMessageBox(_T("文件已保存")); 13 } 14 }
效果图:
3.颜色对话框
1 void CCommomView::OnDialogColordialog() 2 { 3 CColorDialog ClrDlg; 4 ClrDlg.m_cc.Flags |= CC_FULLOPEN | CC_RGBINIT; //完全显示 5 if (ClrDlg.DoModal() == IDOK) 6 { 7 m_clr = ClrDlg.m_cc.rgbResult; 8 CString strColor; 9 strColor.Format(_T("RGB(%d,%d,%d)"),GetRValue(m_clr),GetGValue(m_clr),GetBValue(m_clr)); 10 AfxMessageBox(strColor); 11 } 12 }
效果图:
4.字体对话框
1 void CCommomView::OnDialogFontdialog() 2 { 3 CFontDialog fontDlg; 4 if (m_font.m_hObject) 5 { 6 m_font.DeleteObject(); 7 } 8 if (fontDlg.DoModal() == IDOK) 9 { 10 m_font.CreateFontIndirect(fontDlg.m_cf.lpLogFont); 11 m_fontName = fontDlg.m_cf.lpLogFont->lfFaceName; 12 Invalidate(); 13 } 14 }
以上是设置保存用户选择的字体,接着使窗口无效,重绘
然后在视图类的成员函数OnDraw中用刚刚获取到的字体书写文件
1 void CCommomView::OnDraw(CDC* pDC) 2 { 3 CCommomDoc* pDoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 if (!pDoc) 6 return; 7 8 CFont* pOldFont = pDC->SelectObject(&m_font); 9 pDC->TextOut(0,0, m_fontName); 10 pDC->SelectObject(pOldFont); 11 }
效果图:
5.查找对话框
查找对话框一般是非模态对话框
1 void CCommomView::OnDraw(CDC* pDC) 2 { 3 CCommomDoc* pDoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 if (!pDoc) 6 return; 7 8 CFont* pOldFont = pDC->SelectObject(&m_font); 9 pDC->TextOut(0,0, m_fontName); 10 pDC->SelectObject(pOldFont); 11 12 // TODO: add draw code for native data here 13 }
6.替换对话框
1 void CCommomView::OnDialogReplacedialog() 2 { 3 CFindReplaceDialog* pDlg = new CFindReplaceDialog(); 4 CString strFind,strReplace; 5 strFind = _T("查找"); 6 strReplace = _T("替换"); 7 8 pDlg->Create(false, strFind,strReplace,FR_DOWN, this); 9 pDlg->ShowWindow(SW_SHOW); 10 }
效果图:
7.页面设置对话框
1 void CCommomView::OnDialogPagesetupdialog() 2 { 3 CPageSetupDialog dlg; 4 if (dlg.DoModal()) 5 { 6 PAGESETUPDLG psd = dlg.m_psd; 7 CString str; 8 str.Format(_T("页面大小:%d,%d"),psd.ptPaperSize.x,psd.ptPaperSize.y); 9 AfxMessageBox(str); 10 } 11 }
效果图:
8.打印对话框
1 void CCommomView::OnDialogPagesetupdialog() 2 { 3 CPageSetupDialog dlg; 4 if (dlg.DoModal()) 5 { 6 PAGESETUPDLG psd = dlg.m_psd; 7 CString str; 8 str.Format(_T("页面大小:%d,%d"),psd.ptPaperSize.x,psd.ptPaperSize.y); 9 AfxMessageBox(str); 10 } 11 }
效果图: