OS:win2000 sp4
開発:Del6P
function GetSelText(hWnd: HWND; index: integer): string;
var
len: integer;
s: string;
PC:PChar;
begin
index := SendMessage(hWnd,LB_GETCURSEL,0,0);
len := SendMessage(hWnd,LB_GETTEXTLEN,WPARAM(index),0);
GetMem(PC,len+1); // +1 for null-terminator
SendMessage(hWnd,LB_GETTEXT,WParam(index),LParam(PC));
SetString(s,PC,len);
FreeMem(PC);
result := s;
end;
指定インデックスのテキスト取得の為に上記の関数を作りました。
しかし、BMPオブジェクトを取得しているようでテキストが取り込めません。
テキストのみを取り込みたい場合どのようにすれば宜しいでしょうか?
ご存知の方がいらっしゃいましたらご教示お願いいたします。
これは他アプリの ListBox ですか?
そうであれば、共有メモリを使う必要があります。ググってみてください。
他アプリのLISTBOXになります。
この関数はLISTBOXのハンドルを渡しさえすれば
他アプリのLISTBOXでも内容(テキスト)を取得できる事を
delphiとVBで作成したプログラムで確認しております。
対象プログラムはcanvasにTextoutしているようなのです。
canvasに書かれているtextは取得できないのでしょうか?
> canvasに書かれているtextは取得できないのでしょうか?
できません。絵と同じですから。
たとえば、他アプリから、Delphi でつくったアプリの TLabel の
テキストをどうやって取得するか考えてみてください。
> 対象プログラムはcanvasにTextoutしているようなのです。
ListBox ではないのですか?
なるほど・・・
絵と同じ。それでは完全に無駄ですね。
悪あがきせずに別の方法を検討してみます。
>> 対象プログラムはcanvasにTextoutしているようなのです。
>ListBox ではないのですか?
他アプリのListBoxです。
1要素につき画像とテキストのペアで表示されていました。
質問に答えて頂きありがとう御座います。
このスレはとりあえず解決とさせていただきます。
> 1要素につき画像とテキストのペアで表示されていました。
あぁ、オーナードローですね。それではやはりテキストの取得は困難でしょう。
>> 対象プログラムはcanvasにTextoutしているようなのです。
オーナードローであるかないかは無関係で、要はそのListBox.Items[]データが
設定されているかないかでしょう。
オーナードローであっても、普通は次のようにItems[]データを元にテキストを描画すると思いますけどね。それならテキストを取得できますよ。
with ListBox do
Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]);
ところで、最初に示されたコードは多分どこかで見つけたサンプルを丸写ししたんでしょうけど、この行は不要でしょ?
index := SendMessage(hWnd,LB_GETCURSEL,0,0);
> ところで、最初に示されたコードは多分どこかで見つけたサンプルを丸写ししたんでしょうけど、この行は不要でしょ?
> index := SendMessage(hWnd,LB_GETCURSEL,0,0);
この行がない場合に、
「リストボックスの選択している行の文字列を取得する」場合、どうするんでしょうか。
indexがわからなければとれなさそうですが・・・。
# もしかして、WPARAMに-1とかしたら選択している行として扱われる?わけないですよね・・・
> この行がない場合に、
>「リストボックスの選択している行の文字列を取得する」場合、どうするんでしょうか。
関数の形が
function GetSelText(hWnd: HWND; index: integer): string;
のようになってるんだから、呼ぶ前に index を取得するんでしょう。
逆に、あのコードでは、そのほかの項目は取れませんね。
> オーナードローであるかないかは無関係で、要はそのListBox.Items[]データが
> 設定されているかないかでしょう。
そのとおりですね。
外部にテキストと画像の配列を持ってるような場合は取れませんが。
あぁ、でも関数の名前が GetSelText() なのね?
なんで index 渡す必要があるのだろう?
ツイート | ![]() |