本代碼須要先添加類成員 LOGFONT lf;函數
void CMyDlg::OnButton3() { // TODO: Add your control notification handler code here //方法一:直接給這個結構體中的結構體賦值,經過CFontDialog的構造函數實現字體對話框的初始化。
//HDC hDC=GetDC()->m_hDC; //strcpy(lf.lfFaceName,"新宋體"); //lf.lfCharSet=DEFAULT_CHARSET; //lf.lfWeight=FW_NORMAL; //lf.lfHeight=-MulDiv(12, GetDeviceCaps(hDC, LOGPIXELSY), 72); //lf.lfWidth=8; //lf.lfItalic=FALSE; //lf.lfUnderline=FALSE; //CFontDialog cd(&lf,CF_INITTOLOGFONTSTRUCT);//參數二:取消字體對話框中的顏色。
//方法二:不經過構造函數,而是具體給成員m_cf結構體各個成員賦值實現字體對話框的初始化。 CFontDialog cd; cd.m_cf.lStructSize=sizeof(CHOOSEFONT); //字體對話框對象中有個m_cf成員,它是一個結構體。 cd.m_cf.Flags|=CF_INITTOLOGFONTSTRUCT; cd.m_cf.lpLogFont=&lf;//lpLogFont又是這個m_cf成員中的成員,也是一個結構體。 cd.m_cf.hwndOwner=this->m_hWnd; cd.m_cf.rgbColors=mycolor; if (IDOK == cd.DoModal()) { if (myfont.m_hObject) { myfont.DeleteObject(); } myfont.CreateFontIndirect(cd.m_cf.lpLogFont);//myfont是CFont成員變量,需另聲明。類型爲CFont myfontname = cd.m_cf.lpLogFont->lfFaceName;//用於導出字體對話框中用戶選擇的字體名稱,myfontname也是成員變量,需另聲明。類型爲CString mycolor = cd.m_cf.rgbColors;//用於導出字體對話框用戶選擇的顏色,mycolor也是成員變量,需另聲明。類型爲COLORREF Invalidate();本語句使窗體重繪,具體繪製代碼以下: } }
void CMyDlg::OnPaint() {
//////////////////////////////////////////////////////////////////////////////////////////////////
CPaintDC dc(this); CFont* oldfont = dc.SelectObject(&myfont);//重繪時把字體選入設備 dc.SetBkMode(TRANSPARENT);//設置背景模式爲透明 dc.SetTextColor(mycolor);//設置輸出的字符串顏色 dc.TextOut(10,10,myfontname);//指定位置輸出文本,這裏是表示字體對話框中用戶選擇的字體名稱 dc.SelectObject(oldfont);//還原設備字體
////////////////////////////////////////////////////////////////////////////////////////////////////
if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); // CDC*p=this->GetDC(); } else { CDialog::OnPaint(); } }