CListCrtlで列幅を0固定 – プログラミング – Home

通知
すべてクリア

CListCrtlで列幅を0固定


あすか
 あすか
(@あすか)
ゲスト
結合: 17年前
投稿: 9
Topic starter  

早速ですが質問させていただきます。

CListCtrlで、1列だけ非表示にしたいのですが、
うまくいかなくて困っています。
現在は、初期化時に非表示にしたい列の列幅を0にしています。
しかし、ヘッダをドラッグしてサイズ変更されてしまうと、
列幅が変わり表示されてしまうので、

ON_NOTIFY(HDN_ENDTRACK, 0, &Class::OnHdnEndtrack***)
で、ヘッダの区分線をドラッグし終えたタイミングで、

ListCtrl.SetColumnWidth( 2, 0 );

を行い、列幅を0に戻そうとしていますが、
列幅が0になってくれません。
ちらつき加減から、一度、0になっているようなのですが、
カーソル位置の幅に戻ってしまっているようです。
どなたか、良い方法があれば教えてください。
よろしくお願いいたします。


引用解決済
トピックタグ
あすか
 あすか
(@あすか)
ゲスト
結合: 17年前
投稿: 9
Topic starter  

すみません。
環境を書き忘れていました。

WinXP VC++2005 MFC

です。
よろしくお願いいたします。


返信引用
とおりすがり
 とおりすがり
(@とおりすがり)
ゲスト
結合: 23年前
投稿: 180
 

レポート表示しているんでしょうか?
非表示にしたいならカラムを挿入しなければいいと言ってみるテスト

というのもHeaderContorolの操作までカスタムするのはなかなか難しいから。
他で対処できるならそうした方が楽。
あとは詳しくは知らないですがGetHeaderCtrl()からフックを仕込んで
ヘッダの区分線へのドラッグ開始メッセージを無効にするというのは?

#自分はVC6.0レベルなのでVC2005では何かいいやり知ってる人がいたら
 そちらを参考にしてください


返信引用
あすか
 あすか
(@あすか)
ゲスト
結合: 17年前
投稿: 9
Topic starter  

とおりすがりさん、早速の解答ありがとうございます。

すみません、書いておりませんでしたが、
レポート表示しています。

表示したくなくても、必要なデータがあるので、
カラムは必要だと考えています。
別リストか配列で記憶しようかとも考えたのですが、
ソート等された場合対応しているデータが
分からなくなってしまうのでは、と思ったのです。

ヘッダの区分線へのドラッグ開始メッセージを無効は、
非表示にしたいデータ以外も列幅のサイズ変更出来なくなって
しまうので、困るのです。

HeaderContorolの操作というものを変更するしか無いのでしょうか?


返信引用
とおりすがり
 とおりすがり
(@とおりすがり)
ゲスト
結合: 23年前
投稿: 180
 

リストコントロールへのメッセージはヘッダコントロールの
メッセージを処理後、リストへメッセージが転送されている(はず)のでそこで
操作しようとするとちらついたり無理だったりします。
なのでそういう操作変更をするためにはヘッダにフックを仕込む必要があります。

必要なデータはそのリストコントロールの別データがソート/その他
変更をしたときに付随して変えるようにすればいいのであって
カラムが必要とは思えなかったり・・・


返信引用
あすか
 あすか
(@あすか)
ゲスト
結合: 17年前
投稿: 9
Topic starter  

とおりすがりさんのおっしゃることは重々承知なのですが・・・。
数多いデータから、必要なデータだけリストへセットし、
リストのデータを入力で加工・・・としたくて、
そのための必要データはカラムに入れて、
非表示にしておけば楽!と安易に考えたのです。
確かに、別データとして持っていても、
キーになるデータから変更は可能ですが、
リストから取り出せると安全な気がしませんか?
それと、出来るならやってみたいとも思ってしまって・・・。
最後の手段としては別データとして持つという、
手があるので、もう少し「ヘッダにフックを仕込む」
とやらを、調べてみたいと思います。
ありがとうございます。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

表示する必要のないデータは、
SetItemData/GetItemDataメソッドを使って関連付けられます。
リストの各行にデータへのポインタを格納しておくと楽です。
ソートが発生しても安全に取り出せます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました