[ad_1]
أقوم بتطوير هذا التطبيق ولضمان تعديل المحتوى حسب حجم الصفحة، يستخدم التطبيق حجم الخط الحالي والقيمة التي أعادها GetTextExtentPoint32 لضبط حجم الصفحة عن طريق تغذية النتائج في حلقة زمنية. لقد صدمت إلى حد ما عندما اكتشفت أن GetExtentPoint32 يستمر في إرجاع نفس القيمة على الرغم من انخفاض حجم الخط. لماذا الأمر كذلك، كيف يمكنني حل هذا التحدي.
الرموز ذات الصلة موضحة أدناه:
سي ++
GetTextExtentPoint32(hdc, wstSchoolName11.c_str(), lstrlen(wstSchoolName11.c_str()), &size); if ((iTextLeft + size.cx) > (iPaperWidth - iPictureWidth - iOffsetX)) { iFontSize--; hNewFont = CreateAppFont(iFontSize, FW_BOLD); hOldFont = (HFONT)SelectObject(hdc, hNewFont); GetTextMetrics(hdc, &tm); //int iTextTop11 = iTop + iOffsetY; //int iTextLeft11 = iImageLeft + iPictureWidth + 5 * dOneMMX; wstring wstSchoolName11 = utf8_decode(stSchoolName); CharUpper(&wstSchoolName11[0]); //SIZE size11; GetTextExtentPoint32(hdc, wstSchoolName11.c_str(), lstrlen(wstSchoolName11.c_str()), &size); } else { bMaximumWith = true; }
سي ++
int iWindowExtX = 1000 * GetDeviceCaps(hDC,HORZSIZE); int iWindowExtY = 1000 * GetDeviceCaps(hDC, VERTSIZE); int iViewPortX = GetDeviceCaps(hDC, HORZRES); int iViewPortY = GetDeviceCaps(hDC, VERTRES); SetMapMode(hDC, MM_ISOTROPIC); SetWindowExtEx(hDC, iWindowExtX, iWindowExtY, nullptr); SetViewportExtEx(hDC, iViewPortX, iViewPortY, nullptr);
تعريف تطبيق CreateFont كما هو موضح أدناه. هل هناك أي شيء خطأ في ذلك؟
سي ++
HFONT CreateAppFont(int cHeight, int cWeight, DWORD bItalic = 0, int cEscapement = 0, DWORD bUnderline = 0, LPCWSTR pszFaceName = L"Times New Roman"); HFONT CreateAppFont(int cHeight, int cWeight, DWORD bItalic, int cEscapement, DWORD bUnderline, LPCWSTR pszFaceName) { return CreateFont(cHeight, 0, cEscapement, cEscapement, cWeight, bItalic, bUnderline, FALSE, DEFAULT_CHARSET, OUT_OUTLINE_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, VARIABLE_PITCH, pszFaceName); }
ما حاولت:
لقد قضيت وقتًا معقولًا في تصحيح الأخطاء. النتيجة استلزمت هذا المنصب.
الحل 1
حسنًا، لقد اختبرت هذا للتو وتعكس قيم الحجم الخط المستخدم. أعتقد أنك بحاجة إلى إلقاء نظرة فاحصة على ما يحدث في التعليمات البرمجية الخاصة بك، مع إشارة محددة إلى ملف CreateAppFont
وظيفة.
[ad_2]
コメント