![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話になっています。
TreeViewをプログラムの内部から選択したり、選択を外したりする方法を探しています。
何かご存知のかた、いらっしゃいましたらご教授いただければ幸いです。
さて、これだけですと「自分で調べろ」と言われそうなので、現在の私のやり方をば。
ただ、Cのカテゴリに投稿していますが実際は言語が違います。
なぜCのカテゴリに投稿したかというと、個人開発言語ですので利用者が少なくほしい情報を得ることが出来ないと考えたためです。
ご了承ください。
なお、言語はActiveBasicというものを使っています。(VBとは文法がかなり違うのであえてCに投稿しています。)
以下、無理矢理Cになおしています。
TVITEM tvi;
HWND focus;
tvi.mask = TVIF_STATE;
tvi.stateMask = TVIS_SELECTED;
tvi.state = TVIS_SELECTED;
tvi.hItem = [ツリーのノードのハンドル];
SendMessage(hTree,TVM_SETITEM,0,VarPtr(tvi));
このような感じで書いていますが、
SendMessage(hTree,TVM_GETNEXTITEM,&H0009,0);
で、選択したはずの値(ハンドル)が返ってきません。
いろいろ試行錯誤しているのですが、どうも理解できないので質問させていただきました。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No1 です
状態はわかりましたが確認として
SendMessage(hTree,TVM_SETITEM,0,VarPtr(tvi));
こっちの戻り値確認する方が先ではないかと
http://chokuto.ifdef.jp/urawaza/message/TVM_SETI …
後 TVITEM tvi; の使ってないメンバはクリアしておいたほうが良いかもしれません
http://chokuto.ifdef.jp/urawaza/struct/TVITEM.html
実際使ったことがないので具体的なことは言えませんが
参考として以下あたりが参考になるのではないかと思います
SendMessage使うならMSDN探せとか書いてあるけど
http://www.nitoyon.com/vc/reference/gui/treeview …
ご回答ありがとうございます。
>こっちの戻り値確認する方が先ではないかと
もちろん確認した上でご質問させて頂いています。(確認の後条件文は消してしまいましたが……)
>後 TVITEM tvi; の使ってないメンバはクリアしておいたほうが良いかもしれません
ActiveBasicでは定義した瞬間にすべて0で初期化してくれます……が、そのことではなく、ですか?
もう一度した方がいいのでしょうか……うむむ…
一応症状を画像でまとめてみました。
(A)http://fast-uploader.com/file/6950711390639/
(B)http://fast-uploader.com/file/6950711438023/
なお、(B)の症状については、TreeViewを一度クリックするとクリアされます。
直接ノードをクリックすると(A)の状態になるのです……
今もいろいろ探しながらやっていますが、難しいですね……
No.1
- 回答日時:
回答ではありません
あなたがやりたいのは自分で作ったプログラム内で使用しているTreeViewですか?
記載コードを見てると外部プログラムのTreeViewを
コントロールしようとしているように見えますがどちらでしょうか?
更にできていないのはハンドルの取得の話なのでしょうか?(質問中にはそう書いてる)
それともハンドル取得できてるのに制御(TreeViewのノードをプログラムで選択 )ができない
でも質問中でハンドルが返ってこないってことなら問題は
SendMessageではなくて tvi.hItem = [ツリーのノードのハンドル];
の方になりますけど
どちらなのでしょうか?
ハンドルが取得できているとしてそのハンドルが本当に
目的のものであるかの確認ができているのかもよくわかりません
ActiveBasic事態は依然お遊びで数行のコード書いたことがある程度なので
はっきり覚えてませんがWindowsAPI使えるのでしたらある程度のことはできるはずです
(変数型は合わせる必要ありますけど関数仕様はCと変わりません)
ご返信有難うございます。
言葉足らずで申し訳ありません。
>あなたがやりたいのは自分で作ったプログラム内で使用しているTreeViewですか?
はい、プログラム内で使用しているTreeViewです。
>記載コードを見てると外部プログラムのTreeViewをコントロールしようとしているように見えます
すいません、おそらくそれは「hTree」を見てのことだと思います。
これは、
Dim hTree As HWND
hTree = GetDlgItem(hMainWnd,TreeView1)
のようになっています。
>更にできていないのはハンドルの取得の話なのでしょうか?(質問中にはそう書いてる)
取得ではなく、おそらく設定です。
詳しく書きますと、
先のプログラムをサブルーチン化しており、新しくノードを追加した時にそちらにフォーカスを移したかったのですが、
そのルーチンを実行すると、2つ目移行が全て選択状態(恒例の青い網掛け的な状態)になります。
しかし、SendMessage(hTree,TVM_GETNEXTITEM,&H0009,0)で選択状態のノードのハンドルの取得を試みると、
一番最初のノードのハンドルが返ってきます。
これを修正したいと考えています。
>ActiveBasic事態は依然お遊びで数行のコード書いたことがある程度なのではっきり覚えてませんがWindowsAPI使えるのでしたらある程度のことはできるはずです
>(変数型は合わせる必要ありますけど関数仕様はCと変わりません)
はい、Cと変わらないためこちらのカテゴリで質問させて頂いています。
もうしわけありませんが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 物理学 【 理系科目の選択 】 現在、高一の者です。 文系に興味がなく理系に進もうと思うのですが、物理と生物 7 2022/10/06 22:53
- 英語 ソシュール言語観による品詞、単語、辞書理解の誤り 4 2022/11/24 12:27
- 大学受験 文理選択で迷っている高一です。都内の私立中高一貫校(自称進学校?)に通っています。自分でいうのもどう 6 2022/11/06 21:50
- IT・エンジニアリング プログラミング言語選択について 2 2022/07/09 13:23
- 学校 高校一年生です! 文理選択のアドバイスをください! 6月までに文理選択をしないといけないのですが、と 3 2022/05/25 22:27
- 学校 大学の学部変更 2 2022/09/15 18:37
- 留学・ワーキングホリデー 大至急!! 1 2022/09/19 19:42
- 医学 「コレヲ捨てロール」 4 2023/01/07 14:04
- 日本語 「~人」と「~名」の使い分け 2 2022/06/02 11:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ルート要素ノードが2個ある場合?
-
CPUの考え方を教えてください ...
-
TreeViewについて
-
SNMP リンクダウンとノードダ...
-
昔Winnyってありましたけど、あ...
-
C# TreeViewのノードの判定
-
XML文書の指定した属性値を持つ...
-
vbsのDOMDocumentで要素のText...
-
【C#】TreeViewでクリックした...
-
[C#]テキストボックスに入力し...
-
ノードとは
-
C言語のプログラムを教えてくだ...
-
東芝のDynabookなのですがアン...
-
VBAでxmlファイルの置換をしたい
-
ExcelVBAで書き出した文字が化ける
-
Excel-VBAでXMLの複数ノードの...
-
XMLのHTMLへの変換 (初心者)
-
xmlはどんな用途で使われている
-
(携帯XHTMLで書いた)フォント...
-
アメブロ rss 読み込み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CPUの考え方を教えてください ...
-
昔Winnyってありましたけど、あ...
-
SNMP リンクダウンとノードダ...
-
ルート要素ノードが2個ある場合?
-
あるノードリストに、特定の名...
-
同じタグ名の項目取得
-
コンテキストメニュークリック...
-
ノードとは
-
XML文書の指定した属性値を持つ...
-
ツリービューのノードをダブル...
-
2分探索木の高さを求めるプロ...
-
C# TreeView 効率良いノード追...
-
スケールフリーネットワークをC...
-
複数のマックPCによる数値計算...
-
C#でtreeviewの指定ノードを選...
-
VB6.0でDOMを使用して...
-
ツリービューの使い方が・・・
-
TreeViewに重複する値をセット
-
各ノードの行数取得
-
TreeViewの再表示のちらつきを...
おすすめ情報