[Delphi] メニューのフォントサイズの取得・設定方法

以下のサンプルコードを参考にしてください。
このサンプルアプリケーションは、メニューのフォントサイズの変更方法を示しています。

注意: フォントサイズを変更するとシステム設定である「画面のプロパティ」-「デザイン」のメニューフォントサイズが変更されます。したがって依存しているアプリケーションすべてが 変更されます。
{ メニューフォントサイズの取得 } 
function GetMenuFontSize: integer; 
var 
  ncm: TNonClientMetrics; 
  PixelsPerInch: integer; 
begin 
  ncm.cbSize := sizeof(TNonClientMetrics); 
  SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS),
    @ncm, SPIF_UPDATEINIFILE); 
  PixelsPerInch := GetDeviceCaps(GetDC(0), LOGPIXELSY); 
  Result := -MulDiv(ncm.lfMenuFont.lfHeight, 72, PixelsPerInch); 
end; 

{ メニューフォントサイズの設定 } 
procedure SetMenuFontSize(FontSize: integer); 
var 
  ncm: TNonClientMetrics; 
  PixelsPerInch: Integer; 
begin 
  ncm.cbSize := sizeof(TNonClientMetrics); 
  SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS),
    @ncm, 0); 
  PixelsPerInch := GetDeviceCaps(GetDC(0), LOGPIXELSY); 
  ncm.lfMenuFont.lfHeight := -MulDiv(FontSize, PixelsPerInch, 72); 
  SystemParametersInfo(SPI_SETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS),
    @ncm, SPIF_UPDATEINIFILE); 
end;

コメント (0件)


くろねこ研究所
https://www.blackcat.xyz/article.php/ProgramingFAQ_del0018