【发布时间】:2018-11-24 15:41:06
【问题描述】:
所以我正在玩我的测试应用程序,发现当我将窗口移动到屏幕边缘时,内存使用量正在上升。
同样在 19mb 内存使用时,字体消失并且应用程序出现错误。
但是,当窗口不接触屏幕边缘时,不会发生这种情况。
这是我的youtube video,表明我的意思。
我认为我的代码效率不高。
绘制文字代码:
void drawText(LPCWSTR text, LPCWSTR fontName,int fontSize, int x, int y, HDC hdc) {
//Creat font from name and size
HFONT font = CreateFont(
fontSize,
0,
0,
0,
FW_NORMAL,
FALSE,
FALSE,
FALSE,
ANSI_CHARSET,
OUT_CHARACTER_PRECIS,
CLIP_CHARACTER_PRECIS,
CLEARTYPE_QUALITY,
DEFAULT_PITCH,
fontName);
//Change Current Font
HFONT oldFont = (HFONT) SelectObject(hdc, font);
//Draw Text
TextOut(hdc,
x,
y,
text,
wcslen(text));
//Set back old font
SelectObject(hdc, oldFont);
}
实施:
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
int y = 10;
drawText(L"Hey, im Roboto", L"Roboto", 50, 10, y, hdc);
y += 80;
drawText(L"Hey, im Arial", L"Arial",50, 10, y, hdc);
y += 80;
drawText(L"Hey, im Lucida Grande", L"Lucida Grande", 50, 10, y, hdc);
EndPaint(hwnd, &ps);
break;
【问题讨论】:
-
您好像忘记删除字体了。
-
感谢 DeleteObject(font);确实解决了问题。但我想知道内存上升的原因。
-
您没有在使用后释放资源。为什么您希望内存使用量不会增加?
标签: c++ user-interface winapi