如何修改CMainFrame的标题字体大小,以及标题居中

青稞 2010-07-02 10:11:47
void CMainFrame::OnNcPaint()
{
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CFrameWndEx::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 = this->GetFont();
if (pCurFont != NULL)
{
LOGFONT lf;
ZeroMemory(&lf, sizeof(LOGFONT));
pCurFont->GetLogFont(&lf);
/*lf.lfItalic = FALSE;
lf.lfWeight = FW_BOLD; */
lf.lfHeight = 18;
//_tcscpy_s(lf.lfFaceName, 32, _T("宋体"));
//strcpy(lf.lfFaceName,"Arial");

CFont capfont;
capfont.CreateFontIndirect(&lf);
pCurFont = pDC->SelectObject(&capfont);
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(GetSysColor(COLOR_CAPTIONTEXT));
pDC->DrawText(STRING_CONSOLE_TITLE, &CapRct, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}


ReleaseDC(pDC);
}


CFont* pCurFont = this->GetFont();发现取得字体老是为空,如何取得这个框架原本字体?我只想让字体变大些而已,字体居中就行了,其余背景这些都用系统默认的
...全文
265 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
怎么解决的啊,怎么看不到?
雪影 2010-07-02
  • 打赏
  • 举报
回复
接分~~
andywei1982 2010-07-02
  • 打赏
  • 举报
回复
//画标题栏文字

CFont font;
font.CreateFont(
14, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
PROOF_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
_T("宋体") ); // lpszFacename

CFont* pOldFont = memDC.SelectObject(&font);
CString titleText = GetTitle();

int oldBkMode = memDC.SetBkMode(TRANSPARENT);
int oldTextColor = memDC.SetTextColor(TitleTextColor);

TEXTMETRIC Metrics;
pDC->GetTextMetrics(&Metrics);
rtTitleText.top = rtTitle.top + (rtTitle.Height() - Metrics.tmHeight)/2 + 1;

//memDC.DrawText(titleText,&rtTitleText,DT_LEFT | DT_SINGLELINE);
memDC.DrawText("这是标题文字",&rtTitleText,DT_LEFT | DT_SINGLELINE);
wojiaowpc 2010-07-02
  • 打赏
  • 举报
回复
学习学习

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧