リストビューのヘッダ部を固定 – プログラミング – Home

リストビューのヘッダ部を固定
 
通知
すべてクリア

[解決済] リストビューのヘッダ部を固定


Ponta
 Ponta
(@Ponta)
ゲスト
結合: 20年前
投稿: 15
Topic starter  

リストビューの使い方で質問です。

ヘッダ部分(最上部)にタイトルを入れる事は
出来たのですが、これって「|」をスライドすると
幅を変えられますが、コレを固定にしたいと思ってます。
ネットで、以下の情報を見つけたのですが、
ソースの書き方がわかりません。

>>ListView_GetHeader()で取得できるHeaderControlを
>>EnableWindow()で無効化するという方法もありますが。

ListView_GetHeader((HWND)m_ListCtrl.m_hWnd)で
HeaderControlを取った後、EnableWindow()を呼ぶ方法が
わかりません。

上記の方法以外でもやり方があれば教えてください。
VC6.0・MFCです。


引用未解決
トピックタグ
Ponta
 Ponta
(@Ponta)
ゲスト
結合: 20年前
投稿: 15
Topic starter  

ちょっと進歩しました。
HeaderControlって、リストコントロールにあるんですね。
で、こんなソース書いてみましたが、

CHeaderCtrl* a = (CHeaderCtrl*)ListView_GetHeader((HWND)m_ListCtl.m_hWnd);
a->EnableWindow(FALSE);

EnableWindow()で異常終了します。なんででしょう?


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

ListView_GetHeader の戻り値が、CHeaderCtrl* でないからです。

MFCをお使いなら、CListCtrl::GetHeaderCtrl()を使った方が、
悩まないですむでしょう。


返信引用
Ponta
 Ponta
(@Ponta)
ゲスト
結合: 20年前
投稿: 15
Topic starter  

((CHeaderCtrl *)(m_ListCtrl.GetHeaderCtrl()))->EnableWindow(FALSE);

ご指摘の方法ですぐ出来ました。

ListView_GetHeader()の戻り値はHWND型ですが、
(CHeaderCtrl *)でキャストしてやれば使えるものだと思ってましたが、
違うんですね・・・。

ありがとうございました。


返信引用
Ponta
 Ponta
(@Ponta)
ゲスト
結合: 20年前
投稿: 15
Topic starter  

チェック忘れました。


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 23年前
投稿: 310
 

> ListView_GetHeader()の戻り値はHWND型ですが、
> (CHeaderCtrl *)でキャストしてやれば使えるものだと思ってましたが、

CWnd(およびその派生クラス)にアタッチしてやれば、利用可能です。

CHeaderCtrl hc;
hc.Attach( hWnd );
hc.EnableWindow();
hc.Detach();

ま、SDKでやるなら
::EnableWindow(hWnd, FALSE);
で済みますが。


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 23年前
投稿: 310
 

typo
> hc.EnableWindow();
hc.EnableWindow(FALSE);


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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