掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ツリービューのチェックボックスを押したときに処理をするには? (ID:63379)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いろいろ試してみましたが、 >NMTREEVIEW *pNMTree = ( NMTREEVIEW* )pNMHDR; >ht.pt = pNMTree->ptDrag; では、うまくいかないようでした。 ですので、[HOWTO]のようにGetMessagePos→MapWindowPointsで位置を取得しないとダメっぽい。 void CXXXDlg::OnClickTree(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください NMTREEVIEW *pNMTree = ( NMTREEVIEW* )pNMHDR; TVHITTESTINFO ht = { 0 }; CTreeCtrl* pTree = ( CTreeCtrl* )this->GetDlgItem( IDC_TREE1 ); DWORD pos = ::GetMessagePos(); ht.pt.x = LOWORD( pos ); ht.pt.y = HIWORD( pos ); ::MapWindowPoints( HWND_DESKTOP, pNMHDR->hwndFrom, &ht.pt, 1 ); pTree->HitTest( &ht ); if ( TVHT_ONITEMSTATEICON & ht.flags ) { // チェックが入る時→チェックが入っていない状態 if ( !pTree->GetCheck( ht.hItem ) ) { HTREEITEM hItem = pTree->GetChildItem( ht.hItem ); while ( hItem != NULL ) { pTree->SetCheck( hItem ); hItem = pTree->GetNextItem( hItem, TVGN_NEXT ); } } } *pResult = 0; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.