tavria2
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Zloy_Gelud Цитата: Вообщем нужно установить кастомный шрифт в этом коде | Выдрал из своего проекта: Код: function SysGroupBox(Text, X, Y, W, H) local hWnd=Application.GetWndHandle() local nSize = 8; local WM_SETFONT = 48; hWnd = DLL.CallFunction("user32.dll", "CreateWindowExA", "0,\"BUTTON\",\""..Text.."\",1073741831,"..X..","..Y..","..W..","..H..","..hWnd..",0,0,0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); local DC = DLL.CallFunction("user32.dll", "GetDC", hWnd, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); local GDC = DLL.CallFunction("gdi32.dll", "GetDeviceCaps", DC..",90", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); local MD = DLL.CallFunction("kernel32.dll", "MulDiv", nSize..","..GDC..",72", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); local hFont = DLL.CallFunction("gdi32.dll", "CreateFontA", "-"..MD..",0,0,0,400,0,0,0,0,1,0,0,2,\"Microsoft Sans Serif\"", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); DLL.CallFunction("user32.dll", "SendMessageA", hWnd..","..WM_SETFONT..","..hFont..",0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); Window.Show(hWnd); end | Удаление объекта и дескриптора сделаешь сам, у меня они удаляются в другом месте кода. А вот, как установить системный шрифт ко всем объектам, имеющим дескриптор (hWnd): Код: function SetSystemFont() local WM_SETFONT = 48 local ANSI_VAR_FONT = 12 local hWnd = DialogEx.GetWndHandle(); if hWnd == -1 then hWnd = Application.GetWndHandle(); end local hDC = DLL.CallFunction("user32.dll", "GetDC", hWnd, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); hWndChild = DLL.CallFunction("user32.dll", "FindWindowExA", hWnd..",0,0,0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); hWndObj = DLL.CallFunction("user32.dll", "FindWindowExA", hWndChild..",0,0,0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); while (hWndObj ~= "0") do local hFont = DLL.CallFunction("gdi32.dll", "GetStockObject", ANSI_VAR_FONT, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); DLL.CallFunction("user32.dll", "SendMessageA", hWndObj..","..WM_SETFONT..","..hFont..",1", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); DLL.CallFunction("gdi32.dll", "DeleteObject", hFont, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); hWndObj = DLL.CallFunction("user32.dll", "FindWindowExA", hWndChild..","..hWndObj..",0,0", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); end DLL.CallFunction("user32.dll", "ReleaseDC", hWnd..","..hDC, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL); end |
|