Last updated: 22. 1.1998, 23:19
<* +M2EXTENSIONS *> IMPLEMENTATION MODULE PopFont; (*------------------------------------------ POPFONT.C -- Popup Editor Font Functions ------------------------------------------*) IMPORT Windows; IMPORT SYSTEM; VAR logfont : Windows.LOGFONT; hFont : Windows.HFONT; (*++++****************************************************************) PROCEDURE ChooseFont (hwnd : Windows.HWND) : BOOLEAN; (*********************************************************************) VAR cf : Windows.CHOOSEFONT; BEGIN cf.lStructSize := SIZE (Windows.CHOOSEFONT); cf.hwndOwner := hwnd; cf.hDC := NIL; cf.lpLogFont := SYSTEM.ADR(logfont); cf.iPointSize := 0; cf.Flags := Windows.CF_INITTOLOGFONTSTRUCT + Windows.CF_SCREENFONTS + Windows.CF_EFFECTS; cf.rgbColors := 0000h; cf.lCustData := 0000h; cf.lpfnHook := NIL; cf.lpTemplateName := NIL; cf.hInstance := NIL; cf.lpszStyle := NIL; cf.nFontType := 0; (* Returned from ChooseFont *) cf.nSizeMin := 0; cf.nSizeMax := 0; RETURN Windows.ChooseFont (cf); END ChooseFont; (*++++****************************************************************) PROCEDURE Initialize (hwndEdit : Windows.HWND); (*++++****************************************************************) BEGIN Windows.GetObject (Windows.GetStockObject (Windows.SYSTEM_FONT), SIZE (Windows.LOGFONT), logfont); hFont := Windows.CreateFontIndirect (logfont); Windows.SendMessage (hwndEdit, Windows.WM_SETFONT, SYSTEM.CAST(Windows.WPARAM, hFont), 0); END Initialize; (*++++****************************************************************) PROCEDURE SetFont (hwndEdit : Windows.HWND); (*++++****************************************************************) VAR hFontNew:Windows.HFONT; rect :Windows.RECT; BEGIN hFontNew := Windows.CreateFontIndirect (logfont); Windows.SendMessage (hwndEdit, Windows.WM_SETFONT, SYSTEM.CAST(Windows.WPARAM,hFontNew), 0); Windows.DeleteObject (SYSTEM.CAST(Windows.HGDIOBJ,hFont)); hFont := hFontNew; Windows.GetClientRect (hwndEdit, rect); Windows.InvalidateRect (hwndEdit, rect, TRUE); END SetFont; (*++++****************************************************************) PROCEDURE Deinitialize (); (*********************************************************************) BEGIN Windows.DeleteObject (SYSTEM.CAST(Windows.HGDIOBJ,hFont)); END Deinitialize; BEGIN END PopFont.