ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月26日(金) 15:52

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 11 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2006年12月22日(金) 13:22 
オフライン

登録日時: 2006年12月22日(金) 13:02
記事: 11
お住まい: 東京
はじめての投稿です。

ツリービューを作成しようとしています。
クリックした時に、それがアイテムだったら・・
という所までは、取得出来てるのですが
そのアイテムのテキストの取得方法が分かりません。

現在のコードはこんな感じです。

コード:
Const TVM_GETITEM       = &H110C

Dim cPoint As POINTAPI
Dim sTVHT As TVHITTESTINFO
Dim itm As TVITEM

GetCursorPos(cPoint)
sTVHT.pt.x=cPoint.x
sTVHT.pt.y=cPoint.y
ScreenToClient(hTree1,sTVHT.pt)

itm.mask = TVIF_TEXT
itm.cchTextMax = 255

itm.hItem = 
    SendMessage(hTree1,TVM_HITTEST,NULL,VarPtr(sTVHT) As LPARAM)

If sTVHT.flags = TVHT_ONITEMLABEL Then
    SendMessage(hTree1,TVM_GETITEM,0,VarPtr(itm) As LPARAM)
    MessageBox(hMainWnd,itm.pszText,0,0)  /* 取得出来ない */
End If

自分なりに色々調べて、
もう少しのような気もしますが、取得出来ません。

もしかしたら、方向性も違っているかもしれません。
どなたか、ご存知の方がいましたら
ご教授をお願い致します。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年12月22日(金) 15:11 
オフライン

登録日時: 2005年5月31日(火) 21:11
記事: 58
お住まい: 新潟市
直接返答できませんが

Sinryow ActiveBasic Center

http://ab.sinryow.net/よりBackSearchABを落としてみてください

解決策が見つかりそうですよ


通報する
ページトップ
投稿記事Posted: 2006年12月22日(金) 22:29 
オフライン

登録日時: 2005年5月31日(火) 18:51
記事: 473
お住まい: 新潟県
> はじめての投稿です。
初めまして。

TVM_GETITEMを使ってツリービューのアイテムに設定されている文字列を取得する場合、TVITEM構造体のpszTextメンバに文字列バッファのアドレスを指定する必要があります。
コード:
Const TVM_GETITEM       = &H110C

Dim buf[255] As Byte
Dim cPoint As POINTAPI
Dim sTVHT As TVHITTESTINFO
Dim itm As TVITEM

	GetCursorPos(cPoint)

	sTVHT.pt.x=cPoint.x
	sTVHT.pt.y=cPoint.y
	ScreenToClient(hTree1,sTVHT.pt)

	itm.mask = TVIF_TEXT
	itm.pszText = buf
	itm.cchTextMax = Len(buf)
	itm.hItem = SendMessage(hTree1,TVM_HITTEST,NULL,VarPtr(sTVHT) As LPARAM)

	If sTVHT.flags = TVHT_ONITEMLABEL Then
		SendMessage(hTree1,TVM_GETITEM,0,VarPtr(itm) As LPARAM)
		MessageBox(hMainWnd,itm.pszText,0,0)
	End If
試してないのですけど、こんな感じではないでしょうか?


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年12月23日(土) 02:07 
オフライン

登録日時: 2006年12月22日(金) 13:02
記事: 11
お住まい: 東京
ありがとうございます。

yama さん、7 さん
ありがとうございます。

今、ちょっと環境がなく
来週の月曜日に試してみます。

ちょっと別の質問ですが、
みなさんは、開発で不明な事があった時、
何処で調べていますか?

自分はネットやヘルプとか
activebasic内にあるソースとかも見たりするのですが、
いつも時間がかかってしまい、苦労しています。

この間は何故か、C++のサイトを見ていて解決しました。

なかなか要領を得ないので、
みなさんの御意見を聞いてみたいです。

書籍でこれはいい、というものはありますか?
やはり、C言語の知識などが必要ですか?
Win32Apiは、MSDNとかで調べるんですか?
MSDNを調べて、解決した事は、まだありません。

情報がちらばっていると、解決までに時間がかかります。
「これを調べれば、確実に答えがみつかる」
というものは、ありますか?

今回は、最終的にこの質問版に投稿するを手段を選んでみました。
しかし、すぐに回答を頂いて・・・
この質問版を充実させるというのも、1つの手段なのかもしれませんね・・・

でも、掲示板形式だと即座に答えが引き出せるかというと
微妙な感じがしますね・・・

掲示板から、解決したものに関しては、
もっと整理されたものに変換するとか駄目ですかね?

ヘルプと掲示板の間のような感じで、
Wikiのように、編集とか出来たりして・・・


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年12月23日(土) 08:53 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
お住まい: 埼玉県東松山市
僕の場合は、分からない時はどんな言語でもいいからサンプルがあるか探して、あれば移植、なければ人に聞くようにしています。
聞かぬは一生の恥って言いますしね。

あるいは、不明な部分を単品テストしてみて動くかどうか実験、うまくいったら結合しなおしてバグを探す とかしてます。
ネットにデータを送信するようなプログラムだとそうも行かないのですがw

という事で、いろんな言語が「とりあえず読める」ようになれば人に聞くほど迷う事も少なくなると考えます。


参考

主な言語のコメント文字
コード:
//C系、Java系は殆どがこれで1行コメント。
;PureBasic、アセンブリ言語等、一部の言語ではこれで1行コメント。
'AB、VBなどのBASIC処理系は殆どがこれで1行コメント。
他に、C系やJava系では文末に;を置く必要があるものが多いです。

> 掲示板から、解決したものに関しては、
> もっと整理されたものに変換するとか駄目ですかね?

> ヘルプと掲示板の間のような感じで、
> Wikiのように、編集とか出来たりして・・・
いい案だと思います。掲示板形式のものなら昔ありましたし、山本s(AB開発者)に頼んでみることにします。

_________________
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年12月23日(土) 13:10 
オフライン

登録日時: 2005年5月31日(火) 18:51
記事: 473
お住まい: 新潟県
> 何処で調べていますか?
MSDN2 ライブラリ : http://msdn2.microsoft.com/ja-jp/library/default.aspx
猫でもわかるプログラミング : http://www.kumei.ne.jp/c_lang/index.html
WinAPI Database for VB Programmer : http://www.winapi-database.com/

ウィンドウメッセージリスト : http://yokohama.cool.ne.jp/chokuto/uraw ... index.html
Win32 API関数リスト : http://yokohama.cool.ne.jp/chokuto/uraw ... index.html
構造体リスト : http://yokohama.cool.ne.jp/chokuto/uraw ... index.html
通知メッセージリスト : http://yokohama.cool.ne.jp/chokuto/uraw ... index.html

あとは検索サイトで調べたい構造体や関数を検索してヒットしたページを参考にしています。

> この間は何故か、C++のサイトを見ていて解決しました。
自分の場合C++言語のサンプルコードばかりを参考にしています。
C++言語自体はほとんど触ったことがないんですけど、Win32 APIを使っている場合ABもC++も大した違いはないと思うんですよね。

> MSDNを調べて、解決した事は、まだありません。
解決することはありますけど、最後の手段といった感じでMSDNは使ってます。大抵は検索サイトで検索してみれば解決しますからね。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年12月23日(土) 15:43 
オフライン

登録日時: 2006年12月22日(金) 13:02
記事: 11
お住まい: 東京
konisiさん 7さん 有り難うございます。

紹介して頂いたサイトなど、早速お気に入りに登録させて頂きました。

Javaが役に立つ事もあるんですね・・驚きです。



早く試したいのですが、自宅がMac環境なので出来ないんです・・
virtual pcとかを入れる予定ですが、
もうちょっとの我慢です。(誰に言っている?)

早くー!


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年12月23日(土) 15:58 
オフライン

登録日時: 2006年12月22日(金) 13:02
記事: 11
お住まい: 東京
話がまた、TreeViewの方に戻りますが、
TVITEMのテキストを取得する仕組みって、
何か不思議な感じですね・・

最初に、対照のノードのハンドルを貰ってきて
自分で用意しておいた、TVITEM構造体にそのハンドルをセットして
で、TVITEM構造体にもまた、
bufというテキストを受け取る所を用意しておかないと
テキストが取得出来ない・・
(しかもGETITEMを送らないと取得出来ない)

どんな仕組みになってるんですか?
今回の件で、その辺がひっかかって・・
やっぱりそれは、Windowsの仕組みだから
MSDNには、それが書いてあるんだろうと思うのですが
MSDNでの検索の仕方が良く分かりません。
(検索していても、解決にいたりません)
使いづらくないですか?

全然関係ないですが、
PostgreSQLのマニュアルも検索していて解決にいたりません。

それに比べて、
JavaDoc や PHP のドキュメントは、
めちゃめちゃ使い安いですね・・

頭の中が整理出来ていなくて、
2、3個の話題がまざってしまってすいません。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年12月23日(土) 17:33 
オフライン

登録日時: 2005年5月31日(火) 18:51
記事: 473
お住まい: 新潟県
> 最初に、対照のノードのハンドルを貰ってきて
> 自分で用意しておいた、TVITEM構造体にそのハンドルをセットして
> で、TVITEM構造体にもまた、
> bufというテキストを受け取る所を用意しておかないと
> テキストが取得出来ない・・
> (しかもGETITEMを送らないと取得出来ない)
TVM_GETITEMでツリービューのアイテム情報を取得したい場合、TVITEM構造体にあらかじめ必要なデータを設定しておかなければいけない訳なんです、が...。

TVITEM構造体には、アイテムのハンドル(llbyさんの場合クリックされたアイテムのハンドル)と、どんなデータを取得するのかと、取得するデータが文字列ならその受け皿と、その受け皿の大きさを設定した後、実際に情報を取得するという動きをするんですよね。
意味不明かな...。

> MSDNには、それが書いてあるんだろうと思うのですが
> MSDNでの検索の仕方が良く分かりません。
> (検索していても、解決にいたりません)
TVM_GETITEMと検索してみましたか?
コード:
char szBuffer[MAXTEXTLEN+1];
TV_ITEM item;

item.hItem = hItem;
item.mask = TVIF_TEXT | TVIF_CHILDREN;
item.pszText = szBuffer;
item.cchTextMax = MAXTEXTLEN;
SendMessage(hWnd, TVM_GETITEM, 0, (LPARAM)&item);
MSDN2でTVM_GETITEMで検索してこのサンプルコードを見つけたんですけど、これで "TVITEM構造体のpszTextメンバには文字列バッファへのアドレスを格納するんだな" って分かるんですけど、難しいでしょうかね?


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年12月24日(日) 00:18 
オフライン

登録日時: 2006年12月22日(金) 13:02
記事: 11
お住まい: 東京
7さん 有り難うございます。
たしかに、ありました・・・
申し訳ありません。

一度聞くと、あーそういう事か・・
と思うのですが、
そこに辿り着くまでのプロセスが
なんか納得いかない感じで・・

konisi さん
PHPのドキュメントのような感じで、お願いします。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年12月25日(月) 18:40 
オフライン

登録日時: 2006年12月22日(金) 13:02
記事: 11
お住まい: 東京
7さん、有難う御座います。

ちゃんと取得できました。

お世話になりました。


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 11 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Google [Bot] & ゲスト[25人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean