none
CListCtrlExというのはどんなクラスですか? RRS feed

  • 質問

  • visual studio 2008 VC++(MFCダイアログベース)をやっています。

    CListCtrlの左から2列目以降(=サブアイテム)のテキストを編集できるようにしたいと思ってネット検索をしていたら、codeguruなど、幾つかの情報が引っかかってきました。その中で、CListCtrlExというのが出てきました。

    http://msdn.microsoft.com/ja-jp/library/aa984826(VS.71).aspx

    の中に、「CListCtrlEx クラスは、非公開 MFC クラスですが、アプリケーションに利用すると便利な場合もあります。」とあるのですが、.NET2003の情報です。

    1.「非公開 MFC クラス」というのはどういう扱いで提供されているクラスだと理解すれば良いでしょうか?動作保証が無いなんていうことは無いと思いますが、どうも「非公開 MFC クラスですが、アプリケーションに利用すると便利な場合もあります。」という表現の意図するところがよくわかりません。


    2.Visual Studio .NET 2003ではなく、visual studio2008に関わる情報はどこにあるでしょうか?
    CListCtrlなら、すぐに検索に引っかかって、クラスのメンバや使い方が見つかるのですが、CListCtrlExの情報が見つけられません。

    よろしくお願いします。

    -----------------------------------  以下、余談(補足情報)  --------------------------------------------
    ちなみに
    http://support.microsoft.com/kb/147842/ja
    にあるソースを使ってみたのですが、まだ、扱いきれていません。
    選択した行に応じて強調表示はされるのですが、どの列をクリックしても一番左の列が強調表示されています。つまりサブアイテムは強調表示されないというのが今の現状です。

    2011年1月16日 12:16

回答

  • 英語ページを読むと日本語訳が微妙なことがわかります。

    http://msdn.microsoft.com/en-us/library/aa984826(v=vs.71).aspx
    DAOVIEW also supplies a helpful support class for working with list views. See class CListCtrlEx in the sample.

    つまり、CListCtrlExクラスはDAOVIEWサンプルの中に含まれているということです。サンプルの中に含まれるということは…まぁ、サンプル程度の動作保証しか…というよりも動かなかった場合、サンプルが間違っていたと言われる程度です。

    • 回答としてマーク AnalogTerebi 2011年1月16日 14:27
    2011年1月16日 13:30
  • 1.「非公開 MFC クラス」というのはどういう扱いで提供されているクラスだと理解すれば良いでしょうか?動作保証が無いなんていうことは無いと思いますが、どうも「非公開 MFC クラスですが、アプリケーションに利用すると便利な場合もあります。」という表現の意図するところがよくわかりません。

    動作保証がない、サポートがない、標準提供ではないなどが当てはまるでしょうが、具体的にどういう扱いかは存じません。
    サンプルレベルの提供だったのではないでしょうか?(→ サンプルは動作保証がないので)

    2.Visual Studio .NET 2003ではなく、visual studio2008に関わる情報はどこにあるでしょうか?
    CListCtrlなら、すぐに検索に引っかかって、クラスのメンバや使い方が見つかるのですが、CListCtrlExの情報が見つけられません。

    Visual C++ 2008 のインクルードディレクトリには存在しません。従って、標準のクラスではないということになります。
    標準のクラスではない、存在しないクラスの情報を探しても、出てこないと言うことだと思います。

    選択した行に応じて強調表示はされるのですが、どの列をクリックしても一番左の列が強調表示されています。つまりサブアイテムは強調表示されないというのが今の現状です。

    LVS_EX_FULLROWSELECT スタイルを使った状態をお望みなのでしょうか?
    それともまた別の状態をお望みなのでしょうか?
     


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク AnalogTerebi 2011年1月16日 14:27
    2011年1月16日 13:31
    モデレータ

すべての返信

  • 英語ページを読むと日本語訳が微妙なことがわかります。

    http://msdn.microsoft.com/en-us/library/aa984826(v=vs.71).aspx
    DAOVIEW also supplies a helpful support class for working with list views. See class CListCtrlEx in the sample.

    つまり、CListCtrlExクラスはDAOVIEWサンプルの中に含まれているということです。サンプルの中に含まれるということは…まぁ、サンプル程度の動作保証しか…というよりも動かなかった場合、サンプルが間違っていたと言われる程度です。

    • 回答としてマーク AnalogTerebi 2011年1月16日 14:27
    2011年1月16日 13:30
  • 1.「非公開 MFC クラス」というのはどういう扱いで提供されているクラスだと理解すれば良いでしょうか?動作保証が無いなんていうことは無いと思いますが、どうも「非公開 MFC クラスですが、アプリケーションに利用すると便利な場合もあります。」という表現の意図するところがよくわかりません。

    動作保証がない、サポートがない、標準提供ではないなどが当てはまるでしょうが、具体的にどういう扱いかは存じません。
    サンプルレベルの提供だったのではないでしょうか?(→ サンプルは動作保証がないので)

    2.Visual Studio .NET 2003ではなく、visual studio2008に関わる情報はどこにあるでしょうか?
    CListCtrlなら、すぐに検索に引っかかって、クラスのメンバや使い方が見つかるのですが、CListCtrlExの情報が見つけられません。

    Visual C++ 2008 のインクルードディレクトリには存在しません。従って、標準のクラスではないということになります。
    標準のクラスではない、存在しないクラスの情報を探しても、出てこないと言うことだと思います。

    選択した行に応じて強調表示はされるのですが、どの列をクリックしても一番左の列が強調表示されています。つまりサブアイテムは強調表示されないというのが今の現状です。

    LVS_EX_FULLROWSELECT スタイルを使った状態をお望みなのでしょうか?
    それともまた別の状態をお望みなのでしょうか?
     


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク AnalogTerebi 2011年1月16日 14:27
    2011年1月16日 13:31
    モデレータ
  • Azuleanさん、ありがとうございます。

    動作保証がない、サポートがない、標準提供ではないなどが当てはまるでしょうが、具体的にどういう扱いかは存じません。
    サンプルレベルの提供だったのではないでしょうか?(→ サンプルは動作保証がないので) 

    どうやら、「動作保証のないサンプル」と理解したほうがよさそうですね。
     

    選択した行に応じて強調表示はされるのですが、どの列をクリックしても一番左の列が強調表示されています。つまりサブアイテムは強調表示されないというのが今の現状です。

    LVS_EX_FULLROWSELECT スタイルを使った状態をお望みなのでしょうか?
    それともまた別の状態をお望みなのでしょうか? 

    別の状態を目指しています。一行全体を選ぶことは、できています。

    LVS_EDITLABELSを指定すると、一番左の列に限り、テキストの編集ができると思います。これと同じことをx行目(=リストに登録されている行のうちのどこか)の2列目、3列目・・・・のサブアイテムに対してやりたいということです。例えて言うなら、エクセルのシート上で、任意の行、列にあるセルを一つを選択してそこの文字や数字を書き換えるというようなイメージです。これで伝わりますでしょうか? 

    2011年1月16日 14:16
  • 佐祐理さん、ありがとうございます。

    どうやら、動作保証のないサンプルプログラムの一種と考えたほうが良いようですね。

    2011年1月16日 14:26
  • LVS_EDITLABELSを指定すると、一番左の列に限り、テキストの編集ができると思います。これと同じことをx行目(=リストに登録されている行のうちのどこか)の2列目、3列目・・・・のサブアイテムに対してやりたいということです。例えて言うなら、エクセルのシート上で、任意の行、列にあるセルを一つを選択してそこの文字や数字を書き換えるというようなイメージです。これで伝わりますでしょうか? 


    グリッドコントロールという言葉が近いとは思いますが、それをそのまま実現した標準クラスはないように思います。
    イメージとしては以下のサンプルが近いのかなぁ。

    http://www.codeproject.com/KB/miscctrl/gridctrl.aspx
    http://www.codeproject.com/KB/list/Extended_List_Control.aspx (これは多機能すぎるかもしれませんが)


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2011年1月16日 14:55
    モデレータ
  • Azuleanさん、ありがとうございます。

    グリッドコントロールという言葉が近いとは思いますが、それをそのまま実現した標準クラスはないように思います。
    イメージとしては以下のサンプルが近いのかなぁ。

    http://www.codeproject.com/KB/miscctrl/gridctrl.aspx
    http://www.codeproject.com/KB/list/Extended_List_Control.aspx (これは多機能すぎるかもしれませんが)

    私のやりたいことと近そうです。よく見てみます。(とりあえず、英語が読めないので、時間がかかっています)

     

    2011年1月17日 11:12