MFC Aero成效中的字体大小
MFC Aero效果中的字体大小
我在CSDN上的某位大牛的blog看到了关于MFC Aero编程,其中有段代码
然后在OnPaint()中调用
可是这个怎么设置字体大小啊。效果就像下面的字,太小了,而且菜鸟我还不知道怎么改
求大牛大牛指点啊.
------解决方案--------------------
个人感觉应该在OnPaint()里面修改。在DrawGlowingText(dc, L"Hello I'm Sollyu.", rcText);之前添加对字体的设置,这里刚好有dc,很好改的。代码中没有提到字体,所以显示的就是默认的字体了
------解决方案--------------------
额。。我这边用你的代码有一大堆错误:
无法识别的变量类型:HTHEME DTTOPTS.....
后来我从网上下载到了XPTheme.h uxtheme.h Tmschema.h可是还是说DTTOPTS、DrawThemeTextEx、TEXT_LABEL、CAPTUREBLT无法识别,不知道你怎么解决的,你帮我把这些错误解决了再说。
------解决方案--------------------
要在hMemDC中设置新字体,而不是hDC。
如果不是这个问题,说明你的LOGFONT创建字体时没有搞对
------解决方案--------------------
http://blog.csdn.net/kingsollyu/article/details/6923625这个跟你的一样
------解决方案--------------------
iFontPropId
你看一下MSDN的相关说明
我在CSDN上的某位大牛的blog看到了关于MFC Aero编程,其中有段代码
//绘制发光文字
void DrawGlowingText(HDC hDC, LPWSTR szText, RECT &rcArea,
DWORD dwTextFlags = DT_LEFT | DT_VCENTER | DT_SINGLELINE, int iGlowSize = 10)
{
//获取主题句柄
HTHEME hThm = OpenThemeData(GetDesktopWindow(), L"TextStyle");
//创建DIB
HDC hMemDC = CreateCompatibleDC(hDC);
BITMAPINFO bmpinfo = {0};
bmpinfo.bmiHeader.biSize = sizeof(bmpinfo.bmiHeader);
bmpinfo.bmiHeader.biBitCount = 32;
bmpinfo.bmiHeader.biCompression = BI_RGB;
bmpinfo.bmiHeader.biPlanes = 1;
bmpinfo.bmiHeader.biWidth = rcArea.right - rcArea.left;
bmpinfo.bmiHeader.biHeight = -(rcArea.bottom - rcArea.top);
HBITMAP hBmp = CreateDIBSection(hMemDC, &bmpinfo, DIB_RGB_COLORS, 0, NULL, 0);
if (hBmp == NULL) return;
HGDIOBJ hBmpOld = SelectObject(hMemDC, hBmp);
//绘制选项
DTTOPTS dttopts = {0};
dttopts.dwSize = sizeof(DTTOPTS);
dttopts.dwFlags = DTT_GLOWSIZE | DTT_COMPOSITED;
dttopts.iGlowSize = iGlowSize; //发光的范围大小
//绘制文本
RECT rc = {0, 0, rcArea.right - rcArea.left, rcArea.bottom - rcArea.top};
HRESULT hr = DrawThemeTextEx(hThm, hMemDC, TEXT_LABEL, 0, szText, -1, dwTextFlags , &rc, &dttopts);
if(FAILED(hr)) return;
BitBlt(hDC, rcArea.left, rcArea.top, rcArea.right - rcArea.left,
rcArea.bottom - rcArea.top, hMemDC, 0, 0, SRCCOPY | CAPTUREBLT);
//Clear
SelectObject(hMemDC, hBmpOld);
DeleteObject(hBmp);
DeleteDC(hMemDC);
CloseThemeData(hThm);
}
然后在OnPaint()中调用
RECT rcText = {10, 10, 300, 40};
DrawGlowingText(dc, L"Hello I'm Sollyu.", rcText);
可是这个怎么设置字体大小啊。效果就像下面的字,太小了,而且菜鸟我还不知道怎么改
求大牛大牛指点啊.
------解决方案--------------------
个人感觉应该在OnPaint()里面修改。在DrawGlowingText(dc, L"Hello I'm Sollyu.", rcText);之前添加对字体的设置,这里刚好有dc,很好改的。代码中没有提到字体,所以显示的就是默认的字体了
------解决方案--------------------
额。。我这边用你的代码有一大堆错误:
无法识别的变量类型:HTHEME DTTOPTS.....
后来我从网上下载到了XPTheme.h uxtheme.h Tmschema.h可是还是说DTTOPTS、DrawThemeTextEx、TEXT_LABEL、CAPTUREBLT无法识别,不知道你怎么解决的,你帮我把这些错误解决了再说。
------解决方案--------------------
要在hMemDC中设置新字体,而不是hDC。
如果不是这个问题,说明你的LOGFONT创建字体时没有搞对
------解决方案--------------------
http://blog.csdn.net/kingsollyu/article/details/6923625这个跟你的一样
------解决方案--------------------
iFontPropId
你看一下MSDN的相关说明