
閲覧して頂きありがとうございます。
現在、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も見ています
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
-
4
CString型 全角半角を意識せずに「1文字」ずつ取り出す
C言語・C++・C#
-
5
エディットボックスの入力制限について
C言語・C++・C#
-
6
画面を強制的に再描画させる方法
C言語・C++・C#
-
7
ダイアログ表示時にチェックボックスにチェックされている状態にするには?
C言語・C++・C#
-
8
水平スクロールができない。
C言語・C++・C#
-
9
ラベル(スタティックテキスト)内での改行。
C言語・C++・C#
-
10
エディットボックスのフォントを変えたい
C言語・C++・C#
-
11
MFC ポップアップメニューのチェック表示について
C言語・C++・C#
-
12
CStringをwchar_tに変換したい
C言語・C++・C#
-
13
ビジュアルC++でボタンの有効/無効
C言語・C++・C#
-
14
CFileDialogでフォルダだけを選択させる
C言語・C++・C#
-
15
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
-
16
エディットコントロールでEnter押した時の動作
C言語・C++・C#
-
17
エディットコントロールのイベントハンドラ
Microsoft ASP
-
18
リストコントロールのデータの変更を検知したい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でログファイルにファイルパ...
-
プログラマー達は何故、プログ...
-
DLLファイルの逆コンパイラにつ...
-
C言語の関数のextern宣言
-
C言語について。
-
C言語でファクト関数を使わずに...
-
Windows Formアプリからコンソ...
-
visual studio 2022でのC#プロ...
-
PIC12F1822でLED調光器を作りたい
-
最初に聞かれたこと
-
C言語 関数、変数の宣言について
-
C言語について(初心者)
-
プログラミングc++を全く分か...
-
あってる
-
DNCL(共テ用プログラミング言語...
-
DNCL(共テ用プログラミング言語...
-
C# で 数式文字列処理を処理す...
-
C言語のことです。写真(見にく...
-
Cのプログラムからアクセスでき...
-
プログラミング言語でアプリや...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがない?
-
ダイアログ表示時にチェックボ...
-
FriendとPublicの違い。。。
-
(UWSC) 「#32770」の意味わかり...
-
エディットコントロールでEnter...
-
イベントにAddHandlerされてい...
-
MFCアプリのコマンドラインでパ...
-
ボタンのオーナードローについて
-
MFCのドラッグ&ドロップについて
-
このコンパイルエラーの意味に...
-
オーバーライド関数の呼び出し...
-
C++ protectedにアクセス不可
-
【ASP.NET】 独自で作成したク...
-
個々の関数について継承してい...
-
MFCのCListCtrlでスクロールを検出
-
ダイアログクラスのコントロー...
-
DataGridViewのセルに斜線を引...
-
[MFC] CWnd::MessageBoxの警告...
-
CMainFrameクラスの使い方
-
関数の呼び出し元の検索
おすすめ情報