レポート ビューで MFC リスト コントロールを使用し、グリッド線を使用して、漠然としたスプレッドシート形式でデータを表示します。
ユーザーがコントロールを垂直方向にスクロールすると、余分なグリッド線が描画され、見栄えが悪くなります。
これは、スライダーまたはマウスホイールをスクロールに使用した場合には発生せず、スクロール コントロールの下部にある小さな下矢印ボタンを使用した場合にのみ発生します。
これは、リスト コントロール ウィンドウのサイズが正確な偶数行ではなく、行の一部が下部に表示される場合に発生するようです。
部分的な行が表示されないようにリスト コントロールのサイズを調整すると、問題は解決します。ただし、プログラムが別のコンピューターで実行されると、おそらく行が占めるピクセル数が変化するため、表示されます。
画面解像度、フォントサイズ、「ダイアログユニット」の間の相互作用であると想定しています。
コントロールの作成時に、コントロールのサイズをプログラムで強制する必要があると思います。しかし、どのサイズですか?
ApproximateViewRect() メソッドを使用してみましたが、動作しません。おそらく、このメソッドはレポート ビューを認識していないのでしょうか?
もう 1 つの方法は、CListCtrl の独自の特殊化を作成し、スクロールを行っているメソッドをオーバーライドすることだと思います。これは大変な作業になりそうです。
このスクリーンショットは、グリッド線が失われる密接に関連する問題を示しています
これは余分なグリッド線のあるものです
これら 2 つと、完全にスクロールするものとの唯一の違いは、コントロールの垂直方向のサイズが数ピクセル異なることです。