こんにちは。
VC++6.0にてListViewを使用したアプリを作成しています。
Windowx XP以前のPCでは該当列に表示させたい文字が全て表示されているのですが、
同じアプリをWindows Vistaで動作させると表示させたい文字の一部しか表示され
ません。
以下、ソースの一部
:
LV_COLUMN lv_col;
lv_col.cx = 100;
lv_col.pszText = ABCDEFFG;
:
この時、Windows XPでは、「ABCDEFFG」と表示されるのですが、
Windows Vistaでは、「ABCDEF」と一部しか表示されません。
これは、何故なのでしょうか?
また、対応するには、「lv_col.cx = 100;」の値を大きくすればいいと思う
のですがそれでWindows Vista向けの対応として問題ないのでしょうか?
どなたかご存知の方がいらっしゃいましたらご伝授ねがいます。
よろしくお願いします。
原因はおそらくフォントが違うからです。
よってフォント設定の異なる環境でも再現すると考えられます。
「文字列に幅を合わせる」場合は、フォント情報を取得するか、自動調節を使
いましょう。
自分の環境のみの定数で作るべきではありません。
MFCかSDKか書いてないので、両方書きますが、質問する際は環境を書いてく
ださい。
MFC:CListCtrl::SetColumnWidthの第二引数で
LVSCW_AUTOSIZE_USE_HEADER等を指定する。
SDK:LVM_SETCOLUMNWIDTHメッセージ又はListView_SetColumnWidthで
LVSCW_AUTOSIZE_USE_HEADER等を指定する。
多分こういう話では?
ぬさん、ありがとうございます。
自動調節を使用するようにしました。
本当にありがとうございます。
環境はSDKを使用しています。