VC++でドラッグドロップ
いつもお世話になっております。
今回はドラッグ&ドロップについてお聞きしたいです。
リストボックスにフォルダをドラッグしてそのフォルダの中身を
リストに表示するというものを作りたく、ネットでいろいろ調べた所
以下のように作りました。
ResourceViewでドロップドラッグを許可にチェックを入れる
case WM_CREATE:
DragAcceptFiles(::GetDlgItem(hWnd, IDC_LIST1), TRUE);
return TRUE;
case WM_DROPFILES:
{ // ドロップされた内容を取得
hdrop = (HDROP)wParam;
DWORD dwSize;
CHAR szPath[MAX_PATH+1];
ZeroMemory(szPath, sizeof(szPath));
int num = ::DragQueryFile(hdrop, -1, NULL, 0);
for (int i = 0; i < num; i++);{
dwSize = ::DragQueryFile(hdrop , i, szPath, MAX_PATH+1);
if (dwSize <= 0) //取得失敗
{
return FALSE;
}
else{ //以下にszPathから中身を表示させる処理
・・・}
以上のようにするとドラッグしたファイルの数は
正しく取得しているのですがファイル名を得る関数部分で
1.i=0としているのに、最初からi=numの数になってしまう
2.二つ目のDragQueryFileのiを1にしても戻値(ファイル名のサイズ)は
0となって取得していない
となってしまいます。
なぜこのようになってしまうのか、ご教授願います。
環境はVisual C++6.0
OSは windowsXP SP2です
お礼
MFCですね。 だとすればBorlandでAPIを使っているものとしてはお手上げですね。 ありがとうございました。