Kaynağa Gözat

Fixed not getting correct system fonts.

woollybah 6 yıl önce
ebeveyn
işleme
0a3b3181f9

+ 4 - 0
win32maxguiex.mod/common.bmx

@@ -593,6 +593,7 @@ Extern
 	Function bmx_win32_NONCLIENTMETRICSW_new:Byte Ptr()
 	Function bmx_win32_NONCLIENTMETRICSW_free(handle:Byte Ptr)
 	Function bmx_win32_NONCLIENTMETRICSW_lfMessageFont:Byte Ptr(handle:Byte Ptr)
+	Function bmx_win32_NONCLIENTMETRICSW_size:UInt()
 End Extern
 Type NONCLIENTMETRICSW
 	Field metricsPtr:Byte Ptr
@@ -616,6 +617,9 @@ Type NONCLIENTMETRICSW
 		Return LOGFONTW._create(bmx_win32_NONCLIENTMETRICSW_lfMessageFont(metricsPtr))
 	End Method
 	
+	Method Size:UInt()
+		Return bmx_win32_NONCLIENTMETRICSW_size()
+	End Method
 End Type
 
 Extern

+ 8 - 1
win32maxguiex.mod/glue.cpp

@@ -33,6 +33,7 @@ extern "C" {
 	NONCLIENTMETRICSW * bmx_win32_NONCLIENTMETRICSW_new();
 	void bmx_win32_NONCLIENTMETRICSW_free(NONCLIENTMETRICSW * metrics);
 	LOGFONTW * bmx_win32_NONCLIENTMETRICSW_lfMessageFont(NONCLIENTMETRICSW * metrics);
+	UINT bmx_win32_NONCLIENTMETRICSW_size();
 
 	int bmx_win32_MOUSEHOOKSTRUCT_x(MOUSEHOOKSTRUCT * hook);
 	int bmx_win32_MOUSEHOOKSTRUCT_y(MOUSEHOOKSTRUCT * hook);
@@ -148,7 +149,9 @@ ULONG_PTR bmx_win32_DRAWITEMSTRUCT_itemData(DRAWITEMSTRUCT * item) {
 // ********************************************************
 
 NONCLIENTMETRICSW * bmx_win32_NONCLIENTMETRICSW_new() {
-	return (NONCLIENTMETRICSW *)calloc(1, sizeof(NONCLIENTMETRICSW));
+	NONCLIENTMETRICSW * metrics = (NONCLIENTMETRICSW *)calloc(1, sizeof(NONCLIENTMETRICSW));
+	metrics->cbSize = sizeof(NONCLIENTMETRICSW);
+	return metrics;
 }
 
 void bmx_win32_NONCLIENTMETRICSW_free(NONCLIENTMETRICSW * metrics) {
@@ -159,6 +162,10 @@ LOGFONTW * bmx_win32_NONCLIENTMETRICSW_lfMessageFont(NONCLIENTMETRICSW * metrics
 	return &metrics->lfMessageFont;
 }
 
+UINT bmx_win32_NONCLIENTMETRICSW_size() {
+	return sizeof(NONCLIENTMETRICSW);
+}
+
 // ********************************************************
 
 int bmx_win32_MOUSEHOOKSTRUCT_x(MOUSEHOOKSTRUCT * hook) {

+ 1 - 1
win32maxguiex.mod/win32maxguiex.bmx

@@ -937,7 +937,7 @@ Type TWindowsFont Extends TGuiFont
 		'Attempts to get hold of the Windows themed font (typically Tahoma on XP, Segeo UI on Vista)
 		Local tmpNonClientMetrics:NONCLIENTMETRICSW = New NONCLIENTMETRICSW
 		
-		If SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, 0, tmpNonClientMetrics.metricsPtr, 0 ) Then
+		If SystemParametersInfoW( SPI_GETNONCLIENTMETRICS, tmpNonClientMetrics.Size(), tmpNonClientMetrics.metricsPtr, 0 ) Then
 			Return New TWindowsFont.LoadFromLogFont( tmpNonClientMetrics.lfMessageFont(), pFontStyle, pFontSize )
 		EndIf