ऐसा क्यों है कि getextentpoint32 द्वारा लौटाया गया मान वर्तमान फ़ॉन्ट आकार की परवाह किए बिना समान रहता है?

प्रोग्रामिंग


मैं इस एप्लिकेशन को विकसित कर रहा हूं और यह सुनिश्चित करने के लिए कि सामग्री को पृष्ठ आकार में समायोजित किया गया है, एप्लिकेशन वर्तमान फ़ॉन्ट आकार और 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

GetTextExtentPoint32A फ़ंक्शन (विंगडी.एच) – Win32 ऐप्स | माइक्रोसॉफ्ट लर्न[^] में टेक्स्ट का आकार लौटाता है तार्किक इकाइयाँ. टेक्स्ट डिस्प्ले फ़ंक्शंस डिस्प्ले के लिए आवश्यक वास्तविक स्थान की गणना करने के लिए फ़ॉन्ट आकार से गुणा की गई संख्या का उपयोग करते हैं।

खैर मैंने अभी इसका परीक्षण किया है और आकार मान उपयोग में आने वाले फ़ॉन्ट को दर्शाते हैं। मुझे लगता है कि आपको विशिष्ट संदर्भ के साथ, अपने कोड में क्या चल रहा है, इस पर अधिक बारीकी से गौर करने की आवश्यकता है CreateAppFont समारोह।

コメント

タイトルとURLをコピーしました