_LogFont = Memory.CreateStructure("long, long, long, long, long, byte, byte, byte, byte, byte, byte, byte, byte, char[32]"); -- ÇÓÊÑÇ˜Ñ ãÑÈæØ Èå ÇØáÇÚÇÊ LOGFONT
Memory.SetStructureData(_LogFont, 1, 0, 0, ""); -- lfHeight
Memory.SetStructureData(_LogFont, 2, 0, 0, ""); -- lfWidth
Memory.SetStructureData(_LogFont, 3, 0, 0, ""); -- lfEscapement
Memory.SetStructureData(_LogFont, 4, 0, 0, ""); -- lfOrientation
Memory.SetStructureData(_LogFont, 5, 0, 400, ""); -- lfWeight
Memory.SetStructureData(_LogFont, 6, 0, 1, ""); --Italic
Memory.SetStructureData(_LogFont, 7, 0, 1, ""); --Underline
Memory.SetStructureData(_LogFont, 8, 0, 1, ""); --StrikeOut
Memory.SetStructureData(_LogFont, 9, 0, 0, ""); --Ansi_CHARSET
Memory.SetStructureData(_LogFont, 10, 0, "OUT_TT_PRECIS", ""); --OutPrecision
Memory.SetStructureData(_LogFont, 11, 0, "CLIP_DEFAULT_PRECIS", ""); --ClipPrecision
Memory.SetStructureData(_LogFont, 12, 0, 4, ""); --FontQuality
Memory.SetStructureData(_LogFont, 13, 0, 1, ""); --PitchAndFamily FIXED_PITCH
Memory.SetStructureData(_LogFont, 14, 1, 73, ""); --FaceName chaharomin arguman , code ascii hast . reshteh "Impact"
Memory.SetStructureData(_LogFont, 14, 2, 109, ""); --FaceName
Memory.SetStructureData(_LogFont, 14, 3, 112, ""); --FaceName
Memory.SetStructureData(_LogFont, 14, 4, 97, ""); --FaceName
Memory.SetStructureData(_LogFont, 14, 5, 99, ""); --FaceName
Memory.SetStructureData(_LogFont, 14, 6, 116, ""); --FaceName
chooseFont = Memory.CreateStructure("long, long, long, long, long, long, long, long, long, long, long, long, short, long, long"); -- ÇÓÊÑǘÑí ˜å ãÑÈæØ Èå ÇØáÇÚÇÊÇÓÊÑÇ˜Ñ CHOOSEFONT åÓÊ
Memory.SetStructureData(chooseFont, 1, 0, Memory.Size(chooseFont), ""); -- lStructSize
Memory.SetStructureData(chooseFont, 2, 0, Application.GetWndHandle(), ""); -- hwndOwner
Memory.SetStructureData(chooseFont, 4, 0, _LogFont, ""); -- lpLogFont
Memory.SetStructureData(chooseFont, 5, 0, 0x00000100, ""); -- iPointSize
Memory.SetStructureData(chooseFont, 6, 0, 0x02030041, ""); --Flags CF_SCREENFONTS | CF_FORCEFONTEXIST | CF_INACTIVEFONTS | CF_INITTOLOGFONTSTRUCT | CF_SCALABLEONLY
Memory.SetStructureData(chooseFont, 7, 0, "255", ""); -- rgbColors
Memory.SetStructureData(chooseFont, 8, 0, "", ""); -- lCustData
Memory.SetStructureData(chooseFont, 9, 0, "", ""); -- lpfnHook
Memory.SetStructureData(chooseFont, 10, 0, "", ""); -- lpTemplateName string
Memory.SetStructureData(chooseFont, 11, 0, "", ""); -- hInstance
Memory.SetStructureData(chooseFont, 12, 0, "", ""); -- lpszStyle string
Memory.SetStructureData(chooseFont, 13, 0, 0x0100, ""); --nFontType BOLD_FONTTYPE
Memory.SetStructureData(chooseFont, 14, 0, 64, ""); -- nSizeMin
Memory.SetStructureData(chooseFont, 15, 0, 64, ""); -- nSizeMax
local isOkSelect = DLL.CallFunction("comdlg32.dll", "ChooseFontA", chooseFont, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); -- ÝÑÇÎæäí ÊÇÈÚ ChooseFont ˜å ÏÑ ÝÇíá Comdlg32.dll åÓÊ
if (tonumber(isOkSelect) == 1) then -- ÇÑ ˜ÇÑÈÑ ok ÑÇ ÇäÊÎÇÈ ˜ÑÏ
--result = Subclass.Create(Application.GetWndHandle());
fPtr = Memory.GetStructureData(_LogFont, 14, 0, ""); -- ÇØáÇÚÇÊ ÐÎíÑå ÔÏå ÏÑ åÇÑÏåãíä ÇÓÊÑÇ˜Ñ ÇÓÊÑÇ˜Ñ _LogFont Ñæ ÈíÑ
Dialog.Message("Notice", fPtr, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end