電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
今回はドラッグドロップについてお聞きしたいことがあります。

ダイアログに読取専用エディットボックスとリストボックスをつけて
フォルダをドロップするとエディットにはフォルダのフルパス、
リストにはフォルダ内のファイルが列挙されるというソフトを
作っております。

現状、リストへフォルダをドロップした場合は以上の動作をしますが
エディットへドロップしても何の反応も起きません。
今回はエディットとリストどちらにドロップしても同様の動作をしたく、
ResourceViewで両方ドラッグドロップ許可にしていますが、
リストのほうはドロップするとアイコンには+がでて、
ドロップ可能のようになっていますが実際にはWM_DROPFILESすら
捕まえることができません。

読み取り専用がよくない等いろいろ試しては見ましたが
できませんでした。
リストのほうをドロップ不可(エディットのほうのみ可能)にした場合も
何もおきなかったのですが、そもそもエディットボックスではドロップは
不可能なのでしょうか?

以上の点をご教授願いたいです。
よろしくお願いします。

開発環境は VC++6.0 Professional SP2
OSは WindowsXP です。

A 回答 (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;
  }
}

この回答への補足

ご回答ありがとうございます。

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

今回のものをSDKのみで実現することは可能なのでしょうか?

補足日時:2008/02/21 21:35
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!