お世話になっています。
ダイアログにアイコンを表示(ドロップ許可済み)しているのですが、アイコンに落と
されたファイルをどこで処理すればいいのかわかりません。
普通のウインドウでは、WM_DROPFILES 以下で処理すると思うのですが、ダイアログで
も同じでしょうか。ダイアログのプロシージャでWM_DROPFILES を設定して処理してみた
のですが、アイコン実行時にエラーになってしまいます。
よろしくご教授お願いします。
環境→WinXP
VC++.NET
SDK
同じですねー
ただ、どんなエラーが出るのか、どんなソースを書いているのかなど
もう少し詳しい情報が分からないとアドバイスできません。
以下のようにするとエラーはでなくなったのですが、メッセージボックスが
表示されません。
//ダイアログのプロシージャ
LRESULT CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
char FileName[MAX_PATH+1]; // ドロップされたファイルの名前
UINT Count; // ドロップされたファイルの数
HDROP hDrop; //ハンドル
char FileName[MAX_PATH+1]; //パス
UINT Index = 0;
switch (msg)
{
case WM_DROPFILES:
//ハンドルの取得
hDrop = (HDROP)wParam;
if (wParam == IDC_STATIC)
{
//ドロップされたファイルの数を取得する
Count = DragQueryFile( hDrop, 0xFFFFFFFF, NULL, 0 );
//ファイルの数だけループする
for(Index; Index < Count; Index++ )
{
//ドロップされたファイルのフルパスを取得する
DragQueryFile( hDrop, Index, FileName, MAX_PATH );
//開放
DragFinish( hDrop );
MessageBox( hWnd,FileName,パス, MB_OK );
}
}
return 0;
}
return 0;
}
同じような処理を普通のウインドウ(クライアント領域にファイルを落とす)でする
と、無事にメッセージボックスが表示されるのですが、ダイアログボックスでは表示
されません。とくにダイアログボックスでは、if文をもうけたのですが、これが原因で
しょうか?
よろしくご教授お願いします。
あなたはデバッガーで動作試験をすることはしないのでしょうか?
case WM_DROPFLES: の下の
hDrop = (HDROP)wParam; の行にブレークポイントを置けば
どのように動作しているか追いかけることはそんなに難しいことは
思えないのですけど
if(Count = DragQueryFile( (HDROP)wParam, 0xFFFFFFFF, NULL, 0 ))に変更
ダイアログ D&D許可
IDC_STATIC D&D不許可
こんなんで解決