リストビューのサブアイテムを知る方法 – プログラミング – Home

リストビューのサブアイテムを知る方法
 
通知
すべてクリア

[解決済] リストビューのサブアイテムを知る方法


さくら
 さくら
(@さくら)
ゲスト
結合: 23年前
投稿: 16
Topic starter  

VC++6.0 Win98

リストビュー上で、クリック位置にあるアイテムは取得できたのですが、
サブアイテムの取得方法が分かりません。
調べていると、ListView_SubItemHitTestを使えば良いと書かれていたのですが、
初心者の為、理解できませんでした。
アイテムの取得は以下のようにしました。
本当に初心者で申し訳無いのですが、ご教授お願いします。

void CKankiView::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
CString a1[10]={01,02,03,04,05,06,07,08,09,10};
CEdit*a=(CEdit*)GetDlgItem(IDC_EDIT1);

CListCtrl*p;
p=(CListCtrl*)GetDlgItem(IDC_LIST1);

int n=p->GetNextItem(-1,LVNI_SELECTED);
if(n==-1)return;
a->SetWindowText(a1[n]);
*pResult = 0;
}


引用未解決
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

方法が違うけどこれじゃダメかな?

「m_MListVwCtl」 リストビューコントロールクラスメンバー
「GetFirstSelectedItemPosition」と「GetNextSelectedItem」
「GetItemText」
はMSDNに日本語解説あります

void CKankiView::OnDblclkMlist(NMHDR* pNMHDR, LRESULT* pResult)
{
ポイント1 ↓ ここ
POSITION Sel_pos;

int Sel_nItem;
CString Sel_Txt;
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
UpdateData(TRUE);

ポイント2 ↓ ここ
Sel_pos = m_MListVwCtl.GetFirstSelectedItemPosition();

if (Sel_pos == NULL){
  MessageBox( 特に選択されていません, list クリック, MB_OK );
}
else{
ポイント3 ↓ ここ
 Sel_nItem = m_MListVwCtl.GetNextSelectedItem(Sel_pos);

ポイント4 ↓ ここ
 Sel_Txt   = m_MListVwCtl.GetItemText( Sel_nItem, 0);

 m_MENU_NO = atoi(Sel_Txt);
 Sel_Txt   = m_MListVwCtl.GetItemText( Sel_nItem, 1);


返信引用
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

> 調べていると、ListView_SubItemHitTestを使えば良いと書かれていたのですが、
> 初心者の為、理解できませんでした。

1.現在のマウスポインタの位置を取得します。
 WM_LBUTTONDOWN/UP や NM_CLICK を使っているのなら、メッセージパラメータ中に
 座標が入っています。
 WM_CLICK の場合、GetCursorPos で取得しますが、これはスクリーン座標なので、
 リストビューのクライアント座標に直すために、ScreenToClient を使います。

2.LVHITTESTINFO 型の変数を用意します。
 pt メンバに、1 で取得したマウス座標、flags メンバにフラグを入れます。
 flags には、通常 LVHT_ONITEMLABEL を入れておけばよいと思われますが
 必要に応じて適宜変更してください。

3.ListView_SubItemHitTest を実行します。
 パラメータに 2 で用意した変数のポインタを渡すと、iItem メンバと
 iSubItem メンバに、マウスポインタの位置にあるアイテムのインデックスが
 格納されます。


返信引用
さくら
 さくら
(@さくら)
ゲスト
結合: 23年前
投稿: 16
Topic starter  

わー素敵。できました。
woodさん、シャノンさんありがとう。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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