リストビューの使い方で質問です。
ヘッダ部分(最上部)にタイトルを入れる事は
出来たのですが、これって「|」をスライドすると
幅を変えられますが、コレを固定にしたいと思ってます。
ネットで、以下の情報を見つけたのですが、
ソースの書き方がわかりません。
>>ListView_GetHeader()で取得できるHeaderControlを
>>EnableWindow()で無効化するという方法もありますが。
ListView_GetHeader((HWND)m_ListCtrl.m_hWnd)で
HeaderControlを取った後、EnableWindow()を呼ぶ方法が
わかりません。
上記の方法以外でもやり方があれば教えてください。
VC6.0・MFCです。
ちょっと進歩しました。
HeaderControlって、リストコントロールにあるんですね。
で、こんなソース書いてみましたが、
CHeaderCtrl* a = (CHeaderCtrl*)ListView_GetHeader((HWND)m_ListCtl.m_hWnd);
a->EnableWindow(FALSE);
EnableWindow()で異常終了します。なんででしょう?
ListView_GetHeader の戻り値が、CHeaderCtrl* でないからです。
MFCをお使いなら、CListCtrl::GetHeaderCtrl()を使った方が、
悩まないですむでしょう。
((CHeaderCtrl *)(m_ListCtrl.GetHeaderCtrl()))->EnableWindow(FALSE);
ご指摘の方法ですぐ出来ました。
ListView_GetHeader()の戻り値はHWND型ですが、
(CHeaderCtrl *)でキャストしてやれば使えるものだと思ってましたが、
違うんですね・・・。
ありがとうございました。
チェック忘れました。
> ListView_GetHeader()の戻り値はHWND型ですが、
> (CHeaderCtrl *)でキャストしてやれば使えるものだと思ってましたが、
CWnd(およびその派生クラス)にアタッチしてやれば、利用可能です。
CHeaderCtrl hc;
hc.Attach( hWnd );
hc.EnableWindow();
hc.Detach();
ま、SDKでやるなら
::EnableWindow(hWnd, FALSE);
で済みますが。
typo
> hc.EnableWindow();
hc.EnableWindow(FALSE);