ページ 1 / 1
DragDrop複数選択
Posted: 2009年3月16日(月) 09:33
by ざこ
今までファイルをドラッグ&ドロップするプログラムを作っていましたが、複数のファイルをグループ化してドラッグ&ドロップしてもカーソルが指しているファイルしかプログラムが実行されません。これをグループ化したファイル全部にできるようにしたいのですがどうすればいいのでしょうか?教えて下さい。
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 09:48
by 朽木
#include <stdio.h>
int main(int args, char *argv[/url])
{
int i;
int dummy;
for(i = 0; args > i; i++)
printf("[%d] %s\n", i, argv);
scanf("%d", &dummy);
return 0;
}
実行結果
[0] C:\Users\(中略)\Release\File.exe
[1] C:\Windows\Media\ac3.wav
[2] C:\Windows\Media\chimes.wav
[3] C:\Windows\Media\chord.wav
[4] C:\Windows\Media\ding.wav
[5] C:\Windows\Media\dts.wav
[6] C:\Windows\Media\flourish.mid
0
ということですか?
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 09:58
by ざこ
そんな感じだと思うのですが、開発環境がVC++のMFCで若干感覚が違うような気もします。
中身的には同じなのかもしれません。
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 09:58
by Mist
わからないことが発生する
↓
すぐ質問する
じゃなくて、もう少し自分で勉強する意欲を見せてくださいよ。
この質問だと丸投げしているのと変わらないです。
あと、質問はもう少し正確に。
前回と同じ、アイコンへドロップするのかウィンドウへドロップするのかで回答は変わりますけど。
開発環境なども、前回既に書いているからと省略せず、必要なことはすべて書いてください。
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 10:17
by ざこ
うーん半日は調べたんですけどね。とりあえず方法が思いつかないものですから、それがわかれば後は自分なりにできるとは思います。アイコンへドロップもウィンドウでドロップも必要なのでどちらでも構いません。
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 10:23
by Blue
どんなコードを書いているのでしょうか?
ちゃんと_argc分ループしているのでしょうか?
こんなのはできなくて当然
if (_argc >= 2)
{
// _argv[1] と 1 を固定している
}
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 10:28
by Mist
> 半日は調べたんですけどね。
調べたというだけでは何も伝わりません。
自分がどういうことについて調べて何が理解できて何が理解できないのか。
それによりプログラムを組んでみたけど、どのようにうまくいかなかったのか。
というあたりをもっと明確にしましょう。
> とりあえず方法が思いつかないものですから
方法を考えるのがプログラミングの一番面白いところなんですけど。
方法を教えてもらったら、答え見ながら問題集を解いているのと変わらないです。(だから丸投げと指摘した)
他人のサンプルをあまり理解もせずに瑣末な部分を修正して、思うとおりに動いたとしてもあなたの実力にはならないですよ。
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 10:30
by 朽木
とりあえず私がやったアレ(↑)は動くんですが、それでもというのであれば、
ttp://homepage2.nifty.com/DSS/VCPP/MFC/DragDrop/MFCFileDrop.htm
こういうのとか、
ttp://mailsrv.nara-edu.ac.jp/~asait/visual_cpp/dialog2/drop/drop.htm
こういうのとか。
Googleで「MFC ドラッグ ドロップ」でヒット余裕でした。
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 10:57
by ざこ
今まではコマンドライン引数でargv[1]でファイル移動を指定していたから1個しか移動しないんだと思います。
だからargv-1でしょうか、最初のargv[0]は実行ファイル指定していますので。それでちょっと考えてみたんですけど
例えば今までは1つのファイルでしたのでargcは2で実際に私ファイルはargv[1]の1つだけ。直接指定しているので当然ですね。ですからfor(int i=1; i<argc-1; i++){//処理実行}としてたんですけどどうも違う気がして・・
Mistさんの仰る事はすごくわかります。私もそういうのも面白いと思ったことがあります。
しかし知識が少ないと妙に不安になってしまいます。これでできるのかというよりも私の知っている知識じゃ
無理なのでは・・と。初心者には少し重くてツライ一言です。私にはまだ自分1人でアレコレできる実力はありませんからその楽しさがわかるのはもう少し先になるのかもしれません。やり慣れた項目でなら多少は自信はあるのですが、
もう少し自信と自覚をもってやらないといけないのかもしれません。
私はずっとヤフーで MFC ドラッグ ドロップ 複数ファイル とかで調べてたんですけど
さっぱり引っかからなかったですね。ちょっと朽木さんの仰られた方法で検索してみます。
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 11:00
by SCI
コマンドライン引数自体はMFC特有の技術情報ではないので、変わりにC言語などとつけるほうがよいでしょう。
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 11:13
by ざこ
何か調べ方が悪いのでしょうか。Mistさんの言う通り、もう少し調べる工夫と努力をした方がいいのかもしれませんね。これだけ判れば(朽木さんご紹介のサイト)後は自分なりにウィンドウにどろっぷ、アイコンにどろっぷに対応してみます。このようなサイトを半日かけて見つけられなかったのも悲しいです。それでもわからなかったらまた教えて下さい。厳しいご指摘も大歓迎です。
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 11:19
by Mist
> そんな感じだと思うのですが、開発環境がVC++のMFCで若干感覚が違うような気もします。
にせよ
> for(int i=1; i<argc-1; i++){//処理実行}としてたんですけどどうも違う気がして・・
にしても、なぜ勝手にそう思うのがが理解できません。
やってみて違う結果だったからというのであれば理解できますが。
プログラミングは数学とは違うので答えは一つではありません。
良い悪いはありますが、それは状況によって変化します。
ざこさんは最初から完璧な回答を求めるあまり、今の自分の実力の範囲出来る答えを見つけることも放棄しているように思います。
Re:DragDrop複数選択
Posted: 2009年3月16日(月) 11:30
by ざこ
弱気なのかもしれないですね。何かそういう感じも自分でもします。このままでは中々成長できなのはわかってはいるのですが・・