回答編集履歴

2

リストボックス項目の高さを変えられている、と判断した根拠を関連箇所へ追記

2019/09/27 16:52

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -162,6 +162,12 @@
162
162
 
163
163
  これで分かるように、初回の`DrawItem`呼び出しでItem[1]のときに高さが変わっています。あくまで私の頼りない推測ですが、`CCheckListBox`の実装でチェックボックスの存在などを加味した高さの計算とセットがなされてしまうようです。
164
164
 
165
+ **>>>>追記 2019/09/28 01:51**
166
+
167
+ 尚、コード例は示しませんが、`OnInitDialog`内での`AddString`実行直後に`CDC::GetTextExtent`で高さを確認すると全ての項目で高さ18であったものが、初回の描画、Item[1]以降で14になってしまったことから「高さを変えられている」と判断しました。
168
+
169
+ **<<<<追記ここまで**
170
+
165
171
 
166
172
 
167
173
  そこで、対処として`SubclassDlgItem`~`AddString`の実行後にあえて明示的に`CListBox::SetItemHeight`でItem[0]の高さを指定してみました。

1

抜けを追記

2019/09/27 16:52

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -164,7 +164,7 @@
164
164
 
165
165
 
166
166
 
167
- そこで、対処として`SubclassDlgItem`の実行後にあえて明示的に``CListBox::SetItemHeight`でItem[0]の高さを指定してみました。
167
+ そこで、対処として`SubclassDlgItem`~`AddString`の実行後にあえて明示的に`CListBox::SetItemHeight`でItem[0]の高さを指定してみました。
168
168
 
169
169
  リストボックスのスタイルは`LBS_OWNERDRAWFIXED`なので、ひとつセットすれば他の項目も同じになるだろう、との意図です。
170
170