リストコントロールのチェックボックスのクリックを無効にする方法

解決


リンゴ  2008-08-09 21:22:40  No: 68835

リストコントロールのチェックボックスのクリックを無効にする方法で悩んでいます。
ダイアログボックスのリストコントロールへ次のようにチェックボックスをつけています。

DWORD dwStyle = m_lList01.GetExtendedStyle();
dwStyle |= LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
m_lList01.SetExtendedStyle(dwStyle);        

ダイアログ描画の際には該当の行へチェックを入れて、クリックを無効にして表示を行い
たいのですが、良い方法が見つかりません。無効時にはチェックをグレー化にするのが望
ましいのですが、クリックの無効を先決に考えています。

    皆様のアドバイス宜しくお願いします

開発環境:WinXP(SP2) VC++6.0 MFC


シャノン  2008-08-10 00:45:58  No: 68836

こっちにもリンクしておきますね
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200808/08080021.txt


リンゴ  2008-08-14 01:12:05  No: 68837

いろいろ試して見てサブクラス化で方法で対処しました。

  CListCtrlを規定クラスにCListCtrlSubを作成し、メンバ変数のタイ
プをCListCtrlSubとしました。

  CListCtrlSub内で下記の様に各々のマウスイベントを捕らえてクリッ
クを阻止しました。OnLButtonDown内の様に場合によっては使い分けが可
能となります。

void CListCtrlSub::OnLButtonDown(UINT nFlags, CPoint point) 
{
    if(m_bFlag){
        return;
    }
    CListCtrl::OnLButtonDown(nFlags, point);
}

void CListCtrlSub::OnLButtonDblClk(UINT nFlags, CPoint point) 
{    
    return;
    CListCtrl::OnLButtonDblClk(nFlags, point);
}

void CListCtrlSub::OnRButtonDown(UINT nFlags, CPoint point) 
{
    return;
    CListCtrl::OnRButtonDown(nFlags, point);
}

void CListCtrlSub::OnRButtonDblClk(UINT nFlags, CPoint point) 
{
    return;
    CListCtrl::OnRButtonDblClk(nFlags, point);
}

  皆様のおかげで解決をする事が出来ました。

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加