- 締切済み
VC++でドラッグドロップ
いつもお世話になっております。 今回はドラッグドロップについてお聞きしたいことがあります。 ダイアログに読取専用エディットボックスとリストボックスをつけて フォルダをドロップするとエディットにはフォルダのフルパス、 リストにはフォルダ内のファイルが列挙されるというソフトを 作っております。 現状、リストへフォルダをドロップした場合は以上の動作をしますが エディットへドロップしても何の反応も起きません。 今回はエディットとリストどちらにドロップしても同様の動作をしたく、 ResourceViewで両方ドラッグドロップ許可にしていますが、 リストのほうはドロップするとアイコンには+がでて、 ドロップ可能のようになっていますが実際にはWM_DROPFILESすら 捕まえることができません。 読み取り専用がよくない等いろいろ試しては見ましたが できませんでした。 リストのほうをドロップ不可(エディットのほうのみ可能)にした場合も 何もおきなかったのですが、そもそもエディットボックスではドロップは 不可能なのでしょうか? 以上の点をご教授願いたいです。 よろしくお願いします。 開発環境は VC++6.0 Professional SP2 OSは WindowsXP です。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
ダイアログの『ドラッグアンドドロップを許可』を指定したほうが簡単なように思います 開発の環境は何でしょう? 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; } }
補足
ご回答ありがとうございます。 今回は、というか当方まだVCを始めたばかりでMFCについての知識がないため SDKでやっております。 MFCを用いるといろいろ楽にできるけど最初はSDKをやってからでないと 理解できないということでしたのでまずはSDKをとやっています。 今回のものをSDKのみで実現することは可能なのでしょうか?