• 締切済み

VC++でドラッグドロップ

いつもお世話になっております。 今回はドラッグドロップについてお聞きしたいことがあります。 ダイアログに読取専用エディットボックスとリストボックスをつけて フォルダをドロップするとエディットにはフォルダのフルパス、 リストにはフォルダ内のファイルが列挙されるというソフトを 作っております。 現状、リストへフォルダをドロップした場合は以上の動作をしますが エディットへドロップしても何の反応も起きません。 今回はエディットとリストどちらにドロップしても同様の動作をしたく、 ResourceViewで両方ドラッグドロップ許可にしていますが、 リストのほうはドロップするとアイコンには+がでて、 ドロップ可能のようになっていますが実際にはWM_DROPFILESすら 捕まえることができません。 読み取り専用がよくない等いろいろ試しては見ましたが できませんでした。 リストのほうをドロップ不可(エディットのほうのみ可能)にした場合も 何もおきなかったのですが、そもそもエディットボックスではドロップは 不可能なのでしょうか? 以上の点をご教授願いたいです。 よろしくお願いします。 開発環境は VC++6.0 Professional SP2 OSは WindowsXP です。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

ダイアログの『ドラッグアンドドロップを許可』を指定したほうが簡単なように思います 開発の環境は何でしょう? SDKでしょうか MFCでしょうか 確かに Editコントロールに WS_EX_ACCEPTFILESを付加すればドラッグした場合 カーソルに『+』ついたドロップ可能アイコンに変わります しかし WM_DROPFILESまでメッセージが来ないようです MFCで開発ならCDialogクラスの PreTranslateMessageで if ( pMsg->message == WM_DROPFILES ) {   // メンバー変数 m_ctlEditにEditコントロールが設定されているなら   // 設定されていないなら GetDlgItemなどで取得しましょう   if ( pMsg->hWnd == m_ctlEdit.m_hWnd ) {     this->PostMessage( pMsg->mesage, pMsg->wParam );     return TRUE;   } }

iec1128
質問者

補足

ご回答ありがとうございます。 今回は、というか当方まだVCを始めたばかりでMFCについての知識がないため SDKでやっております。 MFCを用いるといろいろ楽にできるけど最初はSDKをやってからでないと 理解できないということでしたのでまずはSDKをとやっています。 今回のものをSDKのみで実現することは可能なのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VC++でドラッグドロップ

    いつもお世話になっております。 今回はドラッグ&ドロップについてお聞きしたいです。 リストボックスにフォルダをドラッグしてそのフォルダの中身を リストに表示するというものを作りたく、ネットでいろいろ調べた所 以下のように作りました。 ResourceViewでドロップドラッグを許可にチェックを入れる case WM_CREATE:   DragAcceptFiles(::GetDlgItem(hWnd, IDC_LIST1), TRUE);   return TRUE; case WM_DROPFILES:   { // ドロップされた内容を取得   hdrop = (HDROP)wParam;   DWORD dwSize;   CHAR szPath[MAX_PATH+1];   ZeroMemory(szPath, sizeof(szPath));   int num = ::DragQueryFile(hdrop, -1, NULL, 0);   for (int i = 0; i < num; i++);{     dwSize = ::DragQueryFile(hdrop , i, szPath, MAX_PATH+1);     if (dwSize <= 0) //取得失敗     {       return FALSE;     }     else{ //以下にszPathから中身を表示させる処理 ・・・} 以上のようにするとドラッグしたファイルの数は 正しく取得しているのですがファイル名を得る関数部分で 1.i=0としているのに、最初からi=numの数になってしまう 2.二つ目のDragQueryFileのiを1にしても戻値(ファイル名のサイズ)は 0となって取得していない となってしまいます。 なぜこのようになってしまうのか、ご教授願います。 環境はVisual C++6.0 OSは windowsXP SP2です

  • MFCのドラッグ&ドロップについて

    閲覧して頂きありがとうございます。 現在、WindowsXPでvc++6.0のMFC(ダイアログベース)を利用してダイアログを作り エディットボックスに入力されたファイルパスを利用して指定のファイルを 開く簡単なアプリを作ろうとしています。 そこでダイアログのエディットボックスの部分にファイルをドラッグ&ドロップすると エディットボックスにドロップされたファイルのパスを表示させようとしていますが、中々できません。 状況としては、グループボックスの中にエディットボックスを作成し、 グループボックスを右クリック→プロパティ→ドラッグドロップを許可 をすることによりグループボックスにドロップの許可を与えることはできていますが ドロップのイベントを拾うことができておりません。 ※参考サイトなどをみると「WM_DROPFILES」というハンドラがあるみたいなのですが  どこにも見当たらないです。。。 何か不明な点などあれば補足させて頂きますので、よろしくお願いします。

  • c:\をドラッグ&ドロップしたい

    DragAcceptFiles,DragQueryFile,DragFinish及びWM_DROPFILES でディレクトリをドラッグ&ドロップしてディレクトリ名を受け取るプログラムを作ったのですが c:\,a:\等のドラッグ&ドロップが拒否されます。 どうしたらc:\などをドラッグ&ドロップしたときそのディレクトリ名を受け取れるようにできるでしょうか?

  • ドラッグ&ドロップによる項目移動

    ドラッグ&ドロップによる項目の移動が出来るかどうかを教えて頂きたいです。 また出来るのであればやり方(参考サイト等)教えて下さい>< 検索してもドラッグ&ドロップでファイルパスの取得とかしか出ないので困っています>< ・リストボックスを2つ配置して選択している項目を2つのリストボックス間で移動したいです。 (1)リストボックス1の項目を選択 (2)リストボックス2へドラッグ&ドロップ (3)リストボックス1では選択されていた項目を削除、リストボックス2へは項目を追加 ・DataGridViewなどのテーブル表示の列の入れ替え Windowsのフォルダで「名前、更新日時、種類、サイズ、...」と並んでいる項目をマウス操作で入れ替えなど出来ますよね?あんな事も出来たりしませんかね? 「マウスでのドラッグ&ドロップで操作する」がポイントです よろしくお願いします。

  • フォームの外にドラッグ&ドロップ

    現在、VB2005においてアプリケーションを開発しています。 よく、リストボックスなどにドラッグ&ドロップしてパスを入力させる 方法がありますが、これの逆?をやりたいと思っております。 つまり、「すでにリストボックスなどに入力されたアイテムをフォームのそと にドラッグ&ドロップさせた場合にリストボックスからそのアイテムを さくじょする」という動作です。 フォームの外であることをどのように判断してよいかわからないため、 MouseUp,DragDropのイベントを受け取ることができません。 よろしくお願いします。

  • ドラック&ドロップ出来ない時があります

    iMacでMagic Trackpadを使っています。 最近、ファイルをドラック&ドロップすると、かなりの確率でファイルがカーソルにくっついたままで離れなくなってしまいます。escとTrackpadを連打すると離れて元の場所に戻っていきます。 一旦スリープして、復帰させると正常にドラック&ドロップ出来るようになる場合が多いですが、しばらくすると再び出来なくなります。 これは、デスクトップやフォルダ内のファイルだけでなく、ブックマーク追加やアプリの移動など、ドラック&ドロップの動作すべてで起きています。 同じ症状が出る方や、対処法が分かる方、回答お待ちしています。

    • ベストアンサー
    • Mac
  • アイコンのドラッグ&ドロップができない・・・

    アイコンのドラッグ&ドロップが出来ません。。。 小画面などはできるのですが、ファイルやフォルダのアイコンのドラッグ&ドロップができません。 どなたか解決方法をご存知の方、教えて下さい。 できなくて困っています。。。

  • エクセルでドラッグアンドドロップで読み取り専用として開く

    Excel2000です。 エクスプローラ上にエクセルのファイル(.xls)が表示されているとします。 そのファイルをExcel上にドラッグアンドドロップしますと、ファイルが開かれます。 そのときに、エクスプローラ上のそのファイルのプロパティで「読み取り専用」になっているか否かにかかわらず、読み取り専用として開くにはどうすればよいですか? なお、エクセルのメニューの ファイル―開く で出てくるダイアログボックス(「ファイルを開く」)から、読み取り専用として開く方法はわかっています。 その「読み取り専用として開く」と同じことを、ドラッグアンドドロップだけでしたいのです。 OSはWindows98SEです。

  • ドラッグ&ドロップができない

    職場のPCで下記のようなエラーが出ました。 PCを起動するとタスクバーのショートカットアイコンをクリックしても動きません。固まっている状態になります。デスクトップのマイコンをクリックしても開いたまま固まります。それを強制終了するとタスクバーも正常に動くようになります。 次にこれでPCが動くようになっても次にフォルダからフォルダへドロップ&ドラッグでデータを移動しようとしても動きません。右クリックで「切り取り」または「コピー」での移動は可能です。マウスではドラッグ&ドロップできないんです。これ以外は正常に作動しています。 システムが不安定なのかと思いOSの再インストールも検討しているのですが、データの保存など時間がかかりそうなのでとりあえず自宅から私用のデスクトップPCを持ってきたのですが、昨日まで正常に動いていたPCがまた同じような現象になるんです。 デスクトップのアイコンの位置の入れ替えすらできなくなりました。タスクバーにフォトショップのショートカットを作ろうとしてもドラッグ&ドロップができません。不要なファイルをドラッグ&ドロップで削除しようとしても捨てられません。ただDeleteを押しての削除は可能です。 昨日まで別の場所で正常に動いたPCまで同じような状況になるなんておかしすぎますよね??LANでつないでいるから??そんなことはないですよね。最初に使っていたPCも1ヶ月ほど前までは同じ状況で何の問題もなく使えていましたし。場所による影響なんてありえないと思うのですが、何か良い解決策をお持ちの方はいらっしゃらないでしょうか??エラーチェックもしましたが解決しません。 よろしくお願いいたしますm(_ _)m

  • jQueryのドラッグ&ドロップとDB連携

    どうにも行き詰ってしまったので、教えてください。 jQueryを使って、元リストに並んでいるものを、Aグループ、Bグループにそれぞれドラッグして、並び替えた内容をDBに保存しようとしています。 ドラッグ&ドロップについては、サンプルも豊富にありますが、それをDBに保存するようなサンプルが見つかりません。 動作説明も含めて参考になりそうなサイトはないでしょうか。

円安による留学生の変化
このQ&Aのポイント
  • 円安の影響で、日本人の海外留学は減少し、海外からの日本への留学は増加する可能性があります。
  • 円安の影響で、日本人の海外留学が減少し、逆に海外からの日本への留学が増加する傾向にあります。
  • 最近の円安の流れにより、日本人の海外留学は減少し、一方で海外からの日本への留学は増える可能性があります。
回答を見る

専門家に質問してみよう