none
リストビューについて、MFCのHitTestにあたる、CLRのメンバが分りません RRS feed

  • 質問

  • いつもお世話になり、ありがとうございます。

     

    .NET2005 vista です。

     

    リストビューについて、MFCのHitTestにあたる、CLRのメンバが分りません。

     

    MFCでリストビュー内でマウスを押下した時、まだ選択がそのアイテムに来ていない場合、

    GetNextItemでは行の番号が取得できないので、HitTestを使うと思うのです。

     

    関数の引数にCPoint point もない場合は、

     

    コード ブロック

    Point pt;
    GetCursorPos(&pt);
    m_list1.ScreenToClient(&pt);
    int Index = m_list1.HitTest(pt);

     

     

    という書き方になると思うのです。

    これをCLRに置き換えたコードが分りません。

     

    というか、そもそもGetCursorPosにあたるメンバが見つからないので、全く先に進まない、という、笑えない話になりました。

    HitTest にあたるメンバは、InputHitTest が怪しいと思ったのですが、そもそも座標が取得できないので、試すことができません。

     

    勝手なお願いなのですが、できたら、CLRに置き換えたコードを、ご提示いただけませんでしょうか。

     

    2007年12月27日 20:33

回答

  • > GetCursorPosにあたるメンバが見つからないので、全く先に進まない、という、笑えない話になりました。

     

    GetCursorPosに相当する.NET Framework プロパティ

     

    System::Windows::Forms::Control::MousePosition
    System::Windows::Forms::Cursor::Position

     

    ↓コレがきっと役に立ちます。
    http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdndotnet/htm/win32map.asp

    2007年12月28日 0:47
  • 回答だと思う記事の中にある、「回答済み」というボタンをクリックして下さい。

    この場合επιστημηさんの回答にあるボタンですね。

     

    「回答済み」「返信」「引用」というようにボタンが並んでいるかと思いますので。

    ちなみに、質問者(またはマイクロソフトのオペレータ)しか「回答済み」にする事が出来ないので、ログインしていない状態だとボタンが出てきませんので注意して下さい。

    2007年12月28日 11:03

すべての返信

  • > GetCursorPosにあたるメンバが見つからないので、全く先に進まない、という、笑えない話になりました。

     

    GetCursorPosに相当する.NET Framework プロパティ

     

    System::Windows::Forms::Control::MousePosition
    System::Windows::Forms::Cursor::Position

     

    ↓コレがきっと役に立ちます。
    http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdndotnet/htm/win32map.asp

    2007年12月28日 0:47
  • たいへんありがとうございました。

    下記のコードで、解決しました。

    また、Win32 と NET Framework API との対応表のURL、ありがとうございました。

     

    コード ブロック

    Point pt = Cursor->Position;
    Point pp = listView1->PointToClient(pt);

    ListViewHitTestInfo^ info = listView1->HitTest(pp);

    int row = info->Item->Index;

     

     

     

    2007年12月28日 4:24
  • 申し訳ありません。

    質問者です。

    問題が解決した場合、解決済みを表示させるため、どこをクリックすればいいのでしょうか。

     

    2007年12月28日 10:43
  • 回答だと思う記事の中にある、「回答済み」というボタンをクリックして下さい。

    この場合επιστημηさんの回答にあるボタンですね。

     

    「回答済み」「返信」「引用」というようにボタンが並んでいるかと思いますので。

    ちなみに、質問者(またはマイクロソフトのオペレータ)しか「回答済み」にする事が出来ないので、ログインしていない状態だとボタンが出てきませんので注意して下さい。

    2007年12月28日 11:03
  • ファクトさん、たいへんありがとうございました。

     

    「回答済み」というボタンが出る時と、出ない時があって、とてもナゾだったのですが、サインインしていないと、いけないんですね。

     

    失礼いたしました。

    2007年12月28日 17:20
  • こんにちは。中川俊輔 です。

     

    επιστημさん、問題解決につながる回答と参考になるページの紹介ありがとうございます。

     

    ファクトさん、フォーラムの操作説明ありがとうございます。

     

    初々心者さん、フォーラムの操作説明が充実していなくて、ご迷惑をおかけしました。

    問題が解決されたようなので、

    勝手ながらεπιστημさん、ファクトさんんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    問題解決につながる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    初々心者さんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

     

    2008年1月16日 9:19