السلام عليكم.
عندي التباس ولم افهمه؟
اردت ان احسب width character لكتابة المكتوبة في كونترول معين -لنفرض ان عندي notepade.exe وفيه بعض الكتابة - حسب شرح الوندوز يقول ان يجب ان تعمل اختيار اولا مثال:
hdc هو ل كونترول edit داخل النوتباد hFont := GetCurrentObject(hdc, OBJ_FONT); GetObject(hFont, SizeOf(TLogFont), @LogFont); SelectObject(hdc, hFont); form1.label7.Caption := logfont.lfFaceName + ' '+ inttostr (logfont.lfWidth);
يعطيني system وعرضة 7؟
واستعملت GetTextFace(hdc, 256, FaceName);
ونفس الشي؟
وايضا استعملت GetCharABCWidthsFloat(hdc, Ord('A'), Ord('Z'), cw);
وهي ثابت مهما غيرت حجم الخط في notepad.exe
فهل احد عنده اي فكرة لماذا هذا يحدث . او طريقة لحساب عرض الخط (لحروف) في النوتباد. ليس عرض المحرف ككل مثل
GetTextExtentPoint32(hdc, Pchar(s3), Length(s3), FontSize);
هذا يعمل معي . حيث يعطينى طول المحرف ككل.
وشكرا
