在MFC编程中,怎么修改标题栏的字体
3个回答
展开全部
就给这么点分啊,分太低,不要使用第二个方法哦, 只许使用第一个 haha
我想到的有两个方法:
1. 这个主意比较馊,缺点滚凯锋是无法设置字体,但可以居中:)
CString m_strCaption = " hahaha"; //加一堆空格,直至居中
2. 添加 WM_NCPAINT 消息函数, 当然可以设置字体以及居中显示
在你的对话框的头文件中, 在消息映射中添加 afx_msg void OnNcPaint();
在你的对话框大晌的cpp文件中, 在消息映射中添加 ON_WM_NCPAINT()
然后再添加这个消息响应函数:
void CXXXDlg::OnNcPaint()
{
CDialog::OnNcPaint();
CDC* pDC = GetWindowDC();
int x = GetSystemMetrics(SM_CXSIZE)+GetSystemMetrics(SM_CXBORDER)+GetSystemMetrics(SM_CXDLGFRAME);
int y = GetSystemMetrics(SM_CYDLGFRAME);
CRect CapRct;
GetWindowRect(&CapRct);
int y1 = GetSystemMetrics(SM_CYICON)-GetSystemMetrics(SM_CYDLGFRAME)-GetSystemMetrics(SM_CYBORDER);
int x1 = CapRct.Width ()- GetSystemMetrics(SM_CXSIZE)-GetSystemMetrics(SM_CXBORDER)-GetSystemMetrics(SM_CXDLGFRAME);
CapRct.left = x;
CapRct.top = y;
CapRct.right = x1;
CapRct.bottom = y1;
/孙兆/pDC->FillSolidRect(&CapRct,RGB(0,0,0));
CFont* pCurFont = GetFont();
LOGFONT lf;
pCurFont->GetLogFont (&lf);
lf.lfItalic = TRUE;
lf.lfWeight = FW_BOLD;
lf.lfHeight = 18;
strcpy(lf.lfFaceName ,"Arial");
CFont capfont ;
capfont.CreateFontIndirect (&lf);
pCurFont = pDC->SelectObject (&capfont);
pDC->SetBkMode (TRANSPARENT);
pDC->SetTextColor (GetSysColor(COLOR_CAPTIONTEXT));
pDC->DrawText ("My Caption" , &CapRct, DT_SINGLELINE | DT_CENTER | DT_VCENTER); //最好定义一个m_strCaption类成员
ReleaseDC(pDC);
}
我想到的有两个方法:
1. 这个主意比较馊,缺点滚凯锋是无法设置字体,但可以居中:)
CString m_strCaption = " hahaha"; //加一堆空格,直至居中
2. 添加 WM_NCPAINT 消息函数, 当然可以设置字体以及居中显示
在你的对话框的头文件中, 在消息映射中添加 afx_msg void OnNcPaint();
在你的对话框大晌的cpp文件中, 在消息映射中添加 ON_WM_NCPAINT()
然后再添加这个消息响应函数:
void CXXXDlg::OnNcPaint()
{
CDialog::OnNcPaint();
CDC* pDC = GetWindowDC();
int x = GetSystemMetrics(SM_CXSIZE)+GetSystemMetrics(SM_CXBORDER)+GetSystemMetrics(SM_CXDLGFRAME);
int y = GetSystemMetrics(SM_CYDLGFRAME);
CRect CapRct;
GetWindowRect(&CapRct);
int y1 = GetSystemMetrics(SM_CYICON)-GetSystemMetrics(SM_CYDLGFRAME)-GetSystemMetrics(SM_CYBORDER);
int x1 = CapRct.Width ()- GetSystemMetrics(SM_CXSIZE)-GetSystemMetrics(SM_CXBORDER)-GetSystemMetrics(SM_CXDLGFRAME);
CapRct.left = x;
CapRct.top = y;
CapRct.right = x1;
CapRct.bottom = y1;
/孙兆/pDC->FillSolidRect(&CapRct,RGB(0,0,0));
CFont* pCurFont = GetFont();
LOGFONT lf;
pCurFont->GetLogFont (&lf);
lf.lfItalic = TRUE;
lf.lfWeight = FW_BOLD;
lf.lfHeight = 18;
strcpy(lf.lfFaceName ,"Arial");
CFont capfont ;
capfont.CreateFontIndirect (&lf);
pCurFont = pDC->SelectObject (&capfont);
pDC->SetBkMode (TRANSPARENT);
pDC->SetTextColor (GetSysColor(COLOR_CAPTIONTEXT));
pDC->DrawText ("My Caption" , &CapRct, DT_SINGLELINE | DT_CENTER | DT_VCENTER); //最好定义一个m_strCaption类成员
ReleaseDC(pDC);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-07-30
展开全部
要想改字体当然得像1L那么麻烦才行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1L搞那么麻烦...
SetWindowText(_T("1234"));
SetWindowText(_T("1234"));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询