• ベストアンサー

リストコントロールの列幅を固定にする

VC++、MFCでエクスプローラのようなダイアログを作成しています。 その中で、リストコントロールの列幅(ヘッダの幅)を 一部の列だけ固定にしたいのですが、 その方法がまったくわかりません。 幅の初期値を設定する方法はいくつかあるのですが、 そのままではマウスで幅を自由に変更できてしまいます。 手がかりだけでもいいので、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・リストビューのヘッダコントロールをサブクラス化して特定の列だけ  ドラッグで列幅を禁止するようにすれば良いでしょう。  実際に試してはいませんが左クリックを検出してドラッグされようと  したらドラッグの終了とすればいいのかな。 ・あるいは HDN_BEGINTRACK でドラッグを禁止できそうです。  http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200209/02090095.txt→『リストビューのヘッダのディバイダドラッグ禁止方法について』  http://m--takahashi.com/bbs/pastlog/02100/02035.html→『リストビューの列幅変更禁止』  http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_LVheaderdrag.html→『ヘッダのディバイダドラッグ時のメッセージの取得 』 ・以上。

-Kororon-
質問者

お礼

さっそくのアドバイス、ありがとうございます! URL参考にさせていただきました。 関連するコマンドや関数がいくつも出てきて、 サンプルをたくさん見つけられるようになりました。 まだ成功してないですが、なんとかできそうです! ありがとうございました。

-Kororon-
質問者

補足

補足とは少し違ってすみませんが… 紹介して頂いたURL等を読みますと、HDN_BEGINTRACKはサブクラス化しないとハンドルを取得できないということですが、 たとえばON_COLUMNCLICKなどはダイアログクラスのままでもイベントを取得し、処理することができます。 この違いはどういうところにあるのでしょうか。