リストビューのコラムクリックからの任意列番の取り込み方法
Posted: 2005年12月20日(火) 09:53
データ表示用としてのリストビューを生成(RADツールは使用しない)
し,任意の列(コラム)が押された時にその列番を知りたいのですが,
列番引数データ(NM_LISTVIEW構造体のiSubItem)が固定データから変
化してくれません。
BackSearchABや“猫でも分かる~”などにいくつかのヒントがあり,
コラムのボタンタイミングから,上記構造体のバッファへlParamをコピー
して読み出していますが,旨く取り込めていないようです。
親ウィンドウのプロシージャ内に以下のコードを置き,コラムボタンの
クリックタイミングでデータを取り込んでいます。
クリックタイミング(Case LVN_COLUMCLICK)の確認は正常に動作。
なお選択された行番号も取り込んでいますが,これは“コードの切れ端”
におけるhira様の投稿を参照しており,勿論ちゃんと読み込めています。
<ご質問内容>
1)考え方に基本的な間違いがありますか。
2)もしあるとすればそのご指摘をお願い致します。
3)特別な関数(マクロ)など他の方法はありますか。
Case WM_NOTIFY
itemcn = FindSelListItem(hListViewWnd(1))
If wParam = ID_ListView(1) Then
memcpy(VarPtr(lvdispinfo), lParam, Len(lvdispinfo))
End If
Select Case (lvdispinfo.hdr.code)
Case LVN_COLUMNCLICK
memcpy(VarPtr(nmlistview), lParam, Len(nmlistview))
subitemcn = (nmlistview.iSubItem)
End Select
し,任意の列(コラム)が押された時にその列番を知りたいのですが,
列番引数データ(NM_LISTVIEW構造体のiSubItem)が固定データから変
化してくれません。
BackSearchABや“猫でも分かる~”などにいくつかのヒントがあり,
コラムのボタンタイミングから,上記構造体のバッファへlParamをコピー
して読み出していますが,旨く取り込めていないようです。
親ウィンドウのプロシージャ内に以下のコードを置き,コラムボタンの
クリックタイミングでデータを取り込んでいます。
クリックタイミング(Case LVN_COLUMCLICK)の確認は正常に動作。
なお選択された行番号も取り込んでいますが,これは“コードの切れ端”
におけるhira様の投稿を参照しており,勿論ちゃんと読み込めています。
<ご質問内容>
1)考え方に基本的な間違いがありますか。
2)もしあるとすればそのご指摘をお願い致します。
3)特別な関数(マクロ)など他の方法はありますか。
Case WM_NOTIFY
itemcn = FindSelListItem(hListViewWnd(1))
If wParam = ID_ListView(1) Then
memcpy(VarPtr(lvdispinfo), lParam, Len(lvdispinfo))
End If
Select Case (lvdispinfo.hdr.code)
Case LVN_COLUMNCLICK
memcpy(VarPtr(nmlistview), lParam, Len(nmlistview))
subitemcn = (nmlistview.iSubItem)
End Select