ダイアログでのドロップ処理 – プログラミング – Home

ダイアログでのドロップ処理
 
通知
すべてクリア

[解決済] ダイアログでのドロップ処理


初心者@rumu
 初心者@rumu
(@初心者@rumu)
ゲスト
結合: 23年前
投稿: 30
Topic starter  

お世話になっています。

ダイアログにアイコンを表示(ドロップ許可済み)しているのですが、アイコンに落と
されたファイルをどこで処理すればいいのかわかりません。
 普通のウインドウでは、WM_DROPFILES 以下で処理すると思うのですが、ダイアログで
も同じでしょうか。ダイアログのプロシージャでWM_DROPFILES を設定して処理してみた
のですが、アイコン実行時にエラーになってしまいます。

よろしくご教授お願いします。

環境→WinXP
VC++.NET
SDK


引用未解決
トピックタグ
mu
 mu
(@mu)
ゲスト
結合: 23年前
投稿: 1
 

同じですねー
ただ、どんなエラーが出るのか、どんなソースを書いているのかなど
もう少し詳しい情報が分からないとアドバイスできません。


返信引用
初心者@rumu
 初心者@rumu
(@初心者@rumu)
ゲスト
結合: 23年前
投稿: 30
Topic starter  

 以下のようにするとエラーはでなくなったのですが、メッセージボックスが
表示されません。

//ダイアログのプロシージャ
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文をもうけたのですが、これが原因で
しょうか?
よろしくご教授お願いします。


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

あなたはデバッガーで動作試験をすることはしないのでしょうか?
case WM_DROPFLES: の下の
hDrop = (HDROP)wParam; の行にブレークポイントを置けば
どのように動作しているか追いかけることはそんなに難しいことは
思えないのですけど


返信引用
初心者@rumu
 初心者@rumu
(@初心者@rumu)
ゲスト
結合: 23年前
投稿: 30
Topic starter  

if(Count = DragQueryFile( (HDROP)wParam, 0xFFFFFFFF, NULL, 0 ))に変更
ダイアログ D&D許可
IDC_STATIC D&D不許可
こんなんで解決


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました