ページ 11

DragDropについて

Posted: 2009年2月26日(木) 14:12
by ざこ
MFCでDragDropについて勉強しています。アプリケーション内のDragDropならDragするコントロールの位置
を取りDropする位置まできたらドロップする というのは大体ですがわかりました。ではアプリケーション外からは
どうなのでしょうか?例えばAというアプリケーションがあり、Bというテキストファイルがあります。
BをAにDragDropしてA内でBの内容を開く、 ということができるAを作りたいのですがやり方がわかりません。

●イメージ:Bの位置を随時レジストリか何かに入れ、Aの位置まで着たらAのテキストファイルを扱えるような
ディレクトリまで飛ばす、という風なイメージを考えたんですが何かおかしいきがします。

今プロジェクトの状態なのでアプリケーション化しなくてはできなさそうですがどうでしょうか
色々アドバイス下さい。

VC++6.0でやっています。

Re:DragDropについて

Posted: 2009年2月26日(木) 15:50
by toyo
MFCなら
CWnd::DragAcceptFiles(TRUE);

Re:DragDropについて

Posted: 2009年2月27日(金) 11:45
by ざこ
それは調べたらすぐわかりました。少し色々試したんですがプログラムを実行し、例えばリストボックスなどに
DragDropしたテキストファイルを書き出す ということはできました。DragAcceptFilesでドラッグ許可もしております。しかしデスクトップ上に実行ファイルをおいて、そこにテキストファイルをDragDropした場合反応しません。

例えばごみ箱みたいにファイルをごみ箱へDragDropするとファイルがごみ箱の中へ移動する
感じに近いと思うのですがどうすればいいのでしょうか。

Re:DragDropについて

Posted: 2009年2月27日(金) 12:41
by toyo
実行ファイルのアイコンにドラッグですね
その場合はコマンドライン引数で受け取ります。
コンソールアプリ
int main(int argc, char* argv[ ])
の場合のargcとargvと同様にWin32アプリでは __argc と __argv[ ](wchar_t型の__wargv[ ]やTCHAR型の__targv[ ]も使えます)がグローバル変数として使えますよ。
GetCommandLine()でコマンドライン全体の文字列も受け取れます。

Re:DragDropについて

Posted: 2009年2月27日(金) 13:02
by ざこ
なるほど、ちょっと知識不足ですのでコマンドラインについて勉強してきます。わからなかったらまた教えて下さい。ありがとうございました。