HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1211
treeドラッグ&ドロップ ファイルの処理4解決


tree

リンク

2006/12/11(Mon) 00:12:32|NO.4073

ドラッグ&ドロップの例は以下に有ることは判りました。

:: hsp30\sample\new\dragdrop.hsp
:: ちょくとさんのペイジ ファイルのドラッグ・アン
ド・ドロップ
:: Kpan さんのペイジ  リストボックスにファイルを
ドラッグ&ドロップ

これらでドラッグ&ドロップの仕組みは判るのですが、そ
の結果をどう処理してよいかがわかりません。

oncommand の文と、自分のしたい処理文の結合が出来ない
のです。

例えば、ドラッグ&ドロップしたファイル名を複数結合す
るとか、1つでなく2つのリストボックスへドラッグ&ド
ロップするなどの処理をするときに、ファイル名をプロ
グラム中の別の場所に持ってくるにはどうしたらよいの
でしょうか。

全く雲の中にいるみたいに見えません。
簡単なプログラムの例をお示しいただければ嬉しいです。



この記事に返信する


Irisawa

リンク

2006/12/11(Mon) 02:55:42|NO.4074

解釈が正しいかどうか分かりませんが、

> 例えば、ドラッグ&ドロップしたファイル名を複数結合する

一つの変数に結合したい(join)ということでしょうか。
JScriptにもJoin関数ってあったような気がしますがHSPのみで実装するならこういう感じ
になります。
(実装方法は人それぞれ)


#module "m_join" ; join 関数 #defcfunc join str s1, array v1, local l1 sdim l1 foreach v1 l1 += v1(cnt) + s1 loop ; 文字列最後の連結文字を削除 poke l1, strlen(l1) - strlen(s1), 0 return l1 #global ; 使用例 buf = "1", "2", "3" ; カンマ区切り mes "カンマ区切り" pos 15 mes join(",", buf) ; タブ区切り pos 0 mes "タブ区切り" sdim Tab poke Tab, 0, 0x09 pos 15 mes join(Tab, buf) mes join(strf("%c", 0x09), buf) ; こういう書き方も ; 改行 pos 0 mes "改行" pos 15 mes join("\n", buf) ; NULL pos 0 mes "NULL" pos 15 mes join("", buf) stop

> 1つでなく2つのリストボックスへドラッグ&ドロップするなどの処理をするときに、
> ファイル名をプログラム中の別の場所に持ってくる

これは意味が分かりません。
具体例を書いていただけると嬉しいです。

1. 1つでなく2つのリストボックスへドラッグ&ドロップするなどの処理をするとき
2. ファイル名をプログラム中の別の場所



tree

リンク

2006/12/11(Mon) 14:22:30|NO.4075

素早いレスで有難うございます。
HSP初心者ですので、joinプログラム例は勉強になりました。

しかし残念ながら私の問題はそこではないのです。

以下は :: hsp30\sample\new\dragdrop.hsp にあるHSPのサン
プルの抜粋です。

; WM_DROPFILES メッセージハンドラを設定 
oncmd gosub *OnDropFiles, WM_DROPFILES ; ファイルをドラッグ&ドロップできるように設定 DragAcceptFiles hwnd, 1 title "ウィンドウにファイルをドロップしてください" stop *OnDropFiles ; --- ファイルがドロップされたとき --- ; ドロップされたファイルの数を取得する hdrop = wParam ; ドロップファイル情報のハンドル DragQueryFile hdrop, -1, 0, 0 ndrop = stat ; ファイルの数 ; 画面をクリア syscolor 5 : boxf syscolor 8 : pos 0,0 ; ファイル名を取得して表示 sdim filename, 260 .........

この後、複数のファイル名を処理するプログラムをどう結合するか
がわからないでいます。
例えば、ここのjoin program と oncomd gosub ... をどう結びつけ
るか?



Irisawa

リンク

2006/12/11(Mon) 21:21:32|NO.4080

具体的に何がしたいのかがよく分かりませんが基本的にはループの中で逐一処理を行うか
配列に格納してあとでまとめて処理するかのどちらかになります。

ループの中で直接処理した方が処理は一回なので速度も明らかに早いですが場合によっては
問題が起こる可能性などもあるので配列にして後で配列をループ処理した方が簡単かも
知れません。

例として上記のjoin関数に渡して処理する場合はループの中でいったん、配列に格納して
ループを抜けた後でその配列を渡します。



tree

リンク

2006/12/11(Mon) 23:36:46|NO.4081

お世話になります。

「HSP3 付属のサンプルファイル」と、「HSPWiKi:一覧:メニュー
バーを表示する」のプログラム文をじっと見ていましたら、私の目
的にほぼ近付きました。

ご指導の労にお礼申し上げます。



ONION software Copyright 1997-2023(c) All rights reserved.