DragDrop複数選択

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ざこ

DragDrop複数選択

#1

投稿記事 by ざこ » 16年前

今までファイルをドラッグ&ドロップするプログラムを作っていましたが、複数のファイルをグループ化してドラッグ&ドロップしてもカーソルが指しているファイルしかプログラムが実行されません。これをグループ化したファイル全部にできるようにしたいのですがどうすればいいのでしょうか?教えて下さい。

朽木

Re:DragDrop複数選択

#2

投稿記事 by 朽木 » 16年前

#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複数選択

#3

投稿記事 by ざこ » 16年前

そんな感じだと思うのですが、開発環境がVC++のMFCで若干感覚が違うような気もします。
中身的には同じなのかもしれません。

Mist

Re:DragDrop複数選択

#4

投稿記事 by Mist » 16年前

わからないことが発生する

すぐ質問する

じゃなくて、もう少し自分で勉強する意欲を見せてくださいよ。
この質問だと丸投げしているのと変わらないです。

あと、質問はもう少し正確に。
前回と同じ、アイコンへドロップするのかウィンドウへドロップするのかで回答は変わりますけど。

開発環境なども、前回既に書いているからと省略せず、必要なことはすべて書いてください。

ざこ

Re:DragDrop複数選択

#5

投稿記事 by ざこ » 16年前

うーん半日は調べたんですけどね。とりあえず方法が思いつかないものですから、それがわかれば後は自分なりにできるとは思います。アイコンへドロップもウィンドウでドロップも必要なのでどちらでも構いません。

Blue

Re:DragDrop複数選択

#6

投稿記事 by Blue » 16年前

どんなコードを書いているのでしょうか?
ちゃんと_argc分ループしているのでしょうか?

こんなのはできなくて当然
if (_argc >= 2)
{
	// _argv[1] と 1 を固定している
}

Mist

Re:DragDrop複数選択

#7

投稿記事 by Mist » 16年前

> 半日は調べたんですけどね。

調べたというだけでは何も伝わりません。
自分がどういうことについて調べて何が理解できて何が理解できないのか。
それによりプログラムを組んでみたけど、どのようにうまくいかなかったのか。
というあたりをもっと明確にしましょう。

> とりあえず方法が思いつかないものですから
方法を考えるのがプログラミングの一番面白いところなんですけど。
方法を教えてもらったら、答え見ながら問題集を解いているのと変わらないです。(だから丸投げと指摘した)
他人のサンプルをあまり理解もせずに瑣末な部分を修正して、思うとおりに動いたとしてもあなたの実力にはならないですよ。

朽木

Re:DragDrop複数選択

#8

投稿記事 by 朽木 » 16年前

とりあえず私がやったアレ(↑)は動くんですが、それでもというのであれば、

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複数選択

#9

投稿記事 by ざこ » 16年前

今まではコマンドライン引数でargv[1]でファイル移動を指定していたから1個しか移動しないんだと思います。
だからargv-1でしょうか、最初のargv[0]は実行ファイル指定していますので。それでちょっと考えてみたんですけど
例えば今までは1つのファイルでしたのでargcは2で実際に私ファイルはargv[1]の1つだけ。直接指定しているので当然ですね。ですからfor(int i=1; i<argc-1; i++){//処理実行}としてたんですけどどうも違う気がして・・

Mistさんの仰る事はすごくわかります。私もそういうのも面白いと思ったことがあります。
しかし知識が少ないと妙に不安になってしまいます。これでできるのかというよりも私の知っている知識じゃ
無理なのでは・・と。初心者には少し重くてツライ一言です。私にはまだ自分1人でアレコレできる実力はありませんからその楽しさがわかるのはもう少し先になるのかもしれません。やり慣れた項目でなら多少は自信はあるのですが、
もう少し自信と自覚をもってやらないといけないのかもしれません。

私はずっとヤフーで MFC ドラッグ ドロップ 複数ファイル とかで調べてたんですけど
さっぱり引っかからなかったですね。ちょっと朽木さんの仰られた方法で検索してみます。

SCI

Re:DragDrop複数選択

#10

投稿記事 by SCI » 16年前

コマンドライン引数自体はMFC特有の技術情報ではないので、変わりにC言語などとつけるほうがよいでしょう。

ざこ

Re:DragDrop複数選択

#11

投稿記事 by ざこ » 16年前

何か調べ方が悪いのでしょうか。Mistさんの言う通り、もう少し調べる工夫と努力をした方がいいのかもしれませんね。これだけ判れば(朽木さんご紹介のサイト)後は自分なりにウィンドウにどろっぷ、アイコンにどろっぷに対応してみます。このようなサイトを半日かけて見つけられなかったのも悲しいです。それでもわからなかったらまた教えて下さい。厳しいご指摘も大歓迎です。

Mist

Re:DragDrop複数選択

#12

投稿記事 by Mist » 16年前

> そんな感じだと思うのですが、開発環境がVC++のMFCで若干感覚が違うような気もします。

にせよ

> for(int i=1; i<argc-1; i++){//処理実行}としてたんですけどどうも違う気がして・・

にしても、なぜ勝手にそう思うのがが理解できません。
やってみて違う結果だったからというのであれば理解できますが。

プログラミングは数学とは違うので答えは一つではありません。
良い悪いはありますが、それは状況によって変化します。
ざこさんは最初から完璧な回答を求めるあまり、今の自分の実力の範囲出来る答えを見つけることも放棄しているように思います。

ざこ

Re:DragDrop複数選択

#13

投稿記事 by ざこ » 16年前

弱気なのかもしれないですね。何かそういう感じも自分でもします。このままでは中々成長できなのはわかってはいるのですが・・

閉鎖

“C言語何でも質問掲示板” へ戻る