動作環境
C++ Builder XE4
症状
コントロールパネル > ディスプレイ > 画像の解像度
において「テキストやその他の項目の大きさの変更」がある。
そこで設定可能なテキストサイズは以下がある。
- 小 - 100% (既定)(S)
- 中(M) - 125%
- 大(L) - 150%
この設定を「小」から変更した場合、フォームの「width」および「height」プロパティの値も拡大されるようだ。
テストコード
Unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int dpi = this->PixelsPerInch;
ShowMessage(IntToStr(dpi));
}
//---------------------------------------------------------------------------
上記のコードのそれぞれの実行結果は以下となる。
- 小: 96
- 中: 120
- 大: 144
フォームのサイズ(width, height)をプログラム上で変更するようにした場合、上記を考慮しないと「中」や「大」の設定時にフォームの一部しか表示されなくなる。
解像度の高い画面に対して文字が小さくなる場合、ユーザが上記の設定を「小」から変更する場合がある。そのような場合にフォームが正常に表示されなくなる。
Windows 10
Windows 10 (Autumn Creators Update適用済み)にて上記のコードを実行してみた。
dual monitorにおいて左側だけを「125%」にした。
結果は「96」だった。
( 設定変更後、サインアウトはしていない。デスクトップアイコンの文字は大きくなった)。
リンク
二つ目のリンク先でいくつかのリンクが紹介されている。