Win32 GUIアプリケーションでは、ツールバーボタンの文字列が占める領域の幅を決定して、それに応じてボタンの幅を調整する必要があります。ツールバーはプレーンな古いToolbarWindow32
ウィンドウクラスです。私は次のコードを使用します:
HDC dc = GetDC( toolbarWindowHandle );
SIZE size;
GetTextExtentPoint32( dc, stringToMeasure, tcslen(stringToMeasure), &size );
一部の固定文字列(たとえば「Hello」)size.cx
はたとえば72で埋められますが、ボタンにまったく同じ文字列が表示されたツールバーのスクリーンショットを作成すると、文字列がたとえば56ピクセルを占めることがわかります。
違いは明らかにシステムフォント設定に依存します。私は「大きなフォント」を使用していますが、コードによって取得される値は、画面に表示されている値よりも大きくなっています。「小さいフォント」を使用するマシンでは、取得される値は小さくなります。
ウィンドウデバイスのコンテキストでGetTextExtentPoint32()を使用すると、正確に正しいサイズが返されると思いました。私は何が間違っているのですか?