
閲覧して頂きありがとうございます。
現在、WindowsXPでvc++6.0のMFC(ダイアログベース)を利用してダイアログを作り
エディットボックスに入力されたファイルパスを利用して指定のファイルを
開く簡単なアプリを作ろうとしています。
そこでダイアログのエディットボックスの部分にファイルをドラッグ&ドロップすると
エディットボックスにドロップされたファイルのパスを表示させようとしていますが、中々できません。
状況としては、グループボックスの中にエディットボックスを作成し、
グループボックスを右クリック→プロパティ→ドラッグドロップを許可
をすることによりグループボックスにドロップの許可を与えることはできていますが
ドロップのイベントを拾うことができておりません。
※参考サイトなどをみると「WM_DROPFILES」というハンドラがあるみたいなのですが
どこにも見当たらないです。。。
何か不明な点などあれば補足させて頂きますので、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
すみません 先の回答はDialogクラスで処理する場合でした
EditコントロールでD&Dを処理したいのであれば CEditを継承した独自クラスが必要になります
クラスビューまたはメニューの挿入から『クラスの新規作成』
クラスの種類を『MFCクラス』
クラス名を 作成するクラス名 たとえば『CMyEdit』など
基本クラスを 『CEdit』
として OKをクリック
クラスビューでCMyEditクラスを選択して 右クリック > Windowsメッセージハンドラの追加を実行
左側の『Windowsメッセージ/イベント新規作成(N)』で『WM_DROPFILES』を選択
『追加と編集(D)』または『ハンドラの追加(A)』をクリックしてスケルトンを生成
ダイアログエディタで親ダイアログを表示
テキストボックスを選択して クラスウィザードを実行 > メンバ変数タブを選択
ID_EDIT1などクラスを変更するIDを選択して 変数の追加 をクリック
メンバー変数 を設定
カテゴリーを『コントロール』
変数のタイプを新規で作ったクラスに変更 上の例なら『CMyEdit』に
OKをクリック
新規に作ったクラスを ダイアログクラスで使えない旨のメッセージボックスが表示されるが OKクリックして ClassWizardを終了する
ダイアログクラスのヘッダーファイルの冒頭に
#include "MyEdit.h"
を追加する
場所は ダイアログクラス定義の直前がいいと思います
// この辺りに追加
/////////////////////////////////////////////////////////////////////////////
// CMFCTestDlg ダイアログ
Class CMFCTestDlg : public CDialog
といった具合で
とても丁寧でわかりやすいご説明ありがとうございます。
無事に自分が思っているとおりに作れました。
今回は本当にありががとうございました。
No.1
- 回答日時:
WM_DROPFILESは親のダイアログで処理するメッセージになります
ClassWizardを起動してクラス情報タブを選択
画面下部の『メッセージ フィルター(F)』を『ダイアログ』から『ウィンドウ』に変更
メッセージマップタブを選択
『オブジェクトID(I)』で親ダイアログを選択
『メッセージ(G)』の中にある『WM_DROPFILES』を選択
『関数の追加』でスケルトンを生成
といった手順ですよ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
-
4
エディットボックスの入力制限について
C言語・C++・C#
-
5
ラベル(スタティックテキスト)内での改行。
C言語・C++・C#
-
6
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
7
MFCでOnPaintのタイミング
C言語・C++・C#
-
8
ダイアログ表示時にチェックボックスにチェックされている状態にするには?
C言語・C++・C#
-
9
水平スクロールができない。
C言語・C++・C#
-
10
エディットボックスのフォントを変えたい
C言語・C++・C#
-
11
最大化と最小化ボタン
C言語・C++・C#
-
12
MFC ポップアップメニューのチェック表示について
C言語・C++・C#
-
13
リストビューで選択行の背景を変える
C言語・C++・C#
-
14
CStringをwchar_tに変換したい
C言語・C++・C#
-
15
CImage::ReleaseDC()のエラーで困っています。
C言語・C++・C#
-
16
CEdit の内容が変わった時にメッセージを表示させたい
C言語・C++・C#
-
17
CFileDialogでフォルダだけを選択させる
C言語・C++・C#
-
18
ビジュアルC++でボタンの有効/無効
C言語・C++・C#
-
19
VC++でUTF-8のファイルを出力したい
C言語・C++・C#
-
20
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
イベントにAddHandlerされてい...
-
VB.NETでのEnumの使用について
-
ボタンのオーナードローについて
-
既定のコンストラクタがない?
-
[MFC] CWnd::MessageBoxの警告...
-
特定のビューへのポインタ取得...
-
(UWSC) 「#32770」の意味わかり...
-
FriendとPublicの違い。。。
-
DebugクラスとTraceクラスの違い
-
VC++ リストボックスにデータを...
-
C#で定数クラスをシングルトン...
-
DataGridViewのセルに斜線を引...
-
質問です!とても基本的なこと...
-
VC++ 7.1 で メインウィンドウ...
-
【C++】vectorについて
-
関数の呼び出し元の検索
-
【VC++】クラスの追加方法について
-
【ASP.NET】 独自で作成したク...
-
C#で通常のbuttonコントロール...
-
privateなメンバ関数をテストす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA チェックボックスをオーバ...
-
FriendとPublicの違い。。。
-
イベントにAddHandlerされてい...
-
既定のコンストラクタがない?
-
ダイアログ表示時にチェックボ...
-
(UWSC) 「#32770」の意味わかり...
-
【ASP.NET】 独自で作成したク...
-
エディットコントロールでEnter...
-
クラスのアドレスを引数として...
-
WindowsAPIのリストビューの...
-
エディットコントロールのイベ...
-
MFCアプリのコマンドラインでパ...
-
ボタンのオーナードローについて
-
正規表現 [^/]+ の意味を教えて
-
C++ protectedにアクセス不可
-
このコンパイルエラーの意味に...
-
MFCのドラッグ&ドロップについて
-
C# 別プロジェクトのフォームを...
-
オーバーライド関数の呼び出し...
-
MFCのCListCtrlでスクロールを検出
おすすめ情報