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