HDROPはクリップボードへのファイルのコピーなどに使用するためのものです。 またCOleDataSourceを実装させる場合にも使用します。 例として CHAR File1[100]="C:\\1.txt"; CHAR File2[100]="C:\\2.txt"; の2つのファイルをコピーする例を書きます HDROP CDwView::DragCreateFiles () { HDROP hDrop; LPDROPFILES lpDropFileStruct; //必要なファイルの領域のサイズを確保する INT SumFileNameLong=0; SumFileNameLong+=(strlen(File1)+2); SumFileNameLong+=(strlen(File2)+2); //ドラックアンドドロップに必要な領域の確保 //必要な領域はファイルの長さ(ファイル名+2バイト)+DROPFILESの大きさ hDrop = (HDROP)GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT|GMEM_DDESHARE, sizeof(DROPFILES) + SumFileNameLong+2); if (hDrop == NULL) return(hDrop); // Lock block and initialize the data members lpDropFileStruct = (LPDROPFILES) GlobalLock(hDrop); memset(lpDropFileStruct,0,sizeof(DROPFILES) +SumFileNameLong+2); lpDropFileStruct->pFiles = sizeof(DROPFILES); lpDropFileStruct->pt.x = 0; lpDropFileStruct->pt.y = 0; lpDropFileStruct->fNC = FALSE; lpDropFileStruct->fWide = FALSE; //ファイル名の代入 //File2の後には'\0'が2つ必要ですが領域確保をするときにすでに'\0'ですべての領域を //初期化しているので別にする必要はないです char* szPathA = (char*) (&lpDropFileStruct[1]); strcpy(szPathA,File1); szPathA+=(strlen(File1)+1); strcpy(szPathA,File2); szPathA+=strlen(File2); GlobalUnlock(hDrop); return(hDrop); }