Hi all, I am practicing with win api function CreateFont. This is my code. After setting my new font, button's text is dissappearing. How to fix it. This is my CreateFont wrapper function.
proc createFontHadle(wHandle : HWND, fontName : string, fSize : int32, fWeight : int32 = 400,
bItalics : bool = false, bUnderLine : bool = false) : HFONT =
var hFo : HFONT = 0
var dcHandle : HDC
var iHeight : int32
var LOGICPIXELSY : int32 # this is not declared in win api library.
var seventyTwo : int32 = 72 # compiler get angry when i use 72 inside the function
dcHandle = GetDC(wHandle) # here, wHandle is window's handle. Not button's handle
iHeight = MulDiv(fSize, GetDeviceCaps(dcHandle, LOGICPIXELSY), seventyTwo)
discard ReleaseDC(wHandle, dcHandle)
hFo = CreateFont(iHeight, 0,0,0, fWeight, bItalics, bUnderLine, false, 1,
OUT_DEAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH, fontName)
return hFo
And this the wrapper for send message
proc setFont*(wHandle : HWND, chHwnd : HWND, fontName : string = "Tahoma", fontSize : int32 = 10) =
var fHandle : HFONT = createFontHadle(wHandle, fontName, fontSize)
discard SendMessage(chHwnd, WM_SETFONT, WPARAM(fHandle), 1)