質問: vc++でドラッグドロップ いつもお世話になっております。 今回はドラッグドロップについてお聞きしたいことがあります。 ダイアログに読取専用エディットボックスとリストボックスをつけて フォルダをドロップするとエディットにはフォルダのフルパス、 リストにはフォルダ内のファイルが列挙されるというソフトを 作っております。 現状、リストへフォルダをドロップした場合は以上の動作をしますが エディットへドロップしても何の反応も起きません。 今回はエディットとリストどちらにドロップしても同様の動作をしたく、 resourceviewで両方ドラッグドロップ許可にしていますが、 リストのほうはドロップするとアイコンには+がでて、 ドロップ可能のようになっていますが実際にはwm_dropfilesすら 捕まえることができません。 読み取り専用がよくない等いろいろ試しては見ましたが できませんでした。 リストのほうをドロップ不可(エディットのほうのみ可能)にした場合も 何もおきなかったのですが、そもそもエディットボックスではドロップは 不可能なのでしょうか? 以上の点をご教授願いたいです。 よろしくお願いします。 開発環境は vc++6.0 professional sp2 osは windowsxp です。
回答: ダイアログの『ドラッグアンドドロップを許可』を指定したほうが簡単なように思います 開発の環境は何でしょう? 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; } }