CRichEditViewでDrag & Dropでファイルを開く方法


neptune  2004-05-06 16:49:24  No: 53583

こんちはVC++初心者です。

Drag&Dropでファイルを開く方法をご教授お願いします。

環境:Win98 + VC++6.0 
MFCでMDI  RichEdit版メモ帳もどきを作成中です。

AppWizerdでMFC  CRichEditViewを基底クラスにしてMDIにてアプリケーション
を作成しました。
上記の変更のみで、他にウィザード中の設定に変更は加えていません。

状況:
必要なコマンド(書式設定関係、ファイルを開く、保存などのカスタマイズ等など)はできています。

後、Drag & Drop  の機能を追加すれば自分で使うだけなので充分なのですが、
1.OnCreateでD&Dを許可  
        CRichPadsView::DragAcceptFiles(TRUE);
2.WM_DROPFILESを捕まえようと、クラスウィザードにてView に  OnDropFiles
    を作成してもそこに飛んでこない状態です。
3.親Window、ChildWindowでは可能です。RichEditのみ出来ない。

MSDNのサンプルのWordPadを参考にしようと見てみましたが、やはり同じ現象で、
OLE(貼り付けかリンク?)はできるがファイルを開く事は出来ない仕様みたいです。

サブクラス化してWM_NOTIFYも見てみたが、WM_DROPFILESも、EN_DROPFILESも、
来てないようです?(確信はないですが)

現象としてはRichEditコントロールにカーソルが移動すると、本来はコピーマーク[+]の付いた
カーソルになるはずなのに四角のマークの付いたカーソルなのです。

もっと深いレベルで先にOLE関係でHookされているような気がするのですが、どーしても判りません。VC++のエディタ上にはそのような処理はかかれてなさそうです。

以上ご教授宜しくお願いします。

追記:
MFCでアプリケーションを作成するのは初めてです。猫でもわかる・・・を参考に同様なものを
SDKで一度書いているからMFCではここまではSDKの時よりは楽チンでした。
今回は、印刷プレビューが欲しくて作成しています。

(SDKではサブクラス化でWM_DROPFILESを捕まえています。)
SDKではどのように作成するのか判らないし、MFCでは最初から実装されているから。
どちらを改造するのが早いんですかね?

SDKの方での印刷プレビュー作成の考え方(手順、方法など)もご教授したいただければ有難いです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加