プロが教える店舗&オフィスのセキュリティ対策術

VC++、MFCでエクスプローラのようなダイアログを作成しています。

その中で、リストコントロールの列幅(ヘッダの幅)を
一部の列だけ固定にしたいのですが、
その方法がまったくわかりません。

幅の初期値を設定する方法はいくつかあるのですが、
そのままではマウスで幅を自由に変更できてしまいます。

手がかりだけでもいいので、よろしくお願いします。

A 回答 (1件)

★アドバイス


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

この回答への補足

補足とは少し違ってすみませんが…

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

この違いはどういうところにあるのでしょうか。

補足日時:2007/12/18 01:33
    • good
    • 0
この回答へのお礼

さっそくのアドバイス、ありがとうございます!
URL参考にさせていただきました。

関連するコマンドや関数がいくつも出てきて、
サンプルをたくさん見つけられるようになりました。

まだ成功してないですが、なんとかできそうです!
ありがとうございました。

お礼日時:2007/12/18 00:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A