´ÙÀ½ ¿¹Á¦¿¡¼´Â ¸ñ·Ï »óÀÚ¿¡¼ ÇöÀç µð·ºÅ͸®ÀÇ ³»¿ëÀ» Ç¥½Ã ÇÏ °í »ç¿ëÀÚ°¡ ÇÑ ¹ø¿¡ ÇϳªÀÇ ÆÄÀÏÀ» »èÁ¦ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù.
Ç¥ÁØ ¸ñ·Ï »óÀÚ ½ºÅ¸ÀÏ ¿Ü¿¡ÀÌ ¸ñ·Ï »óÀÚ´Â LBS_MULTICOLUMN ¹× LBS_HSCROLL ½ºÅ¸ÀÏÀ» ÇÏ°íÀÖ´Ù. Äڵ带 ÇöÀç µð·ºÅ͸®¿¡ ÀÖ´Â ¸ðµç ÆÄÀÏÀÇ À̸§À¸·Î ¸ñ·Ï »óÀÚ¸¦ ä¿ì±â À§ÇØ DlgDirList ÇÔ¼ö¸¦ »ç¿ë ÇÏ ¿© ¸ñ·Ï »óÀÚ¸¦ ÃʱâÈ ÇÕ´Ï´Ù. »èÁ¦ ´ÜÃ߸¦ ¼±Åà ÇÏ´Â °æ¿ì DlgDirSelectEx ÇÔ¼ö´Â ¼±ÅÃÇÑ ÆÄÀÏÀÇ À̸§À» °Ë»ö ÇÕ´Ï´Ù. »ç¿ë ÇÏ ¿© ÆÄÀÏÀ» »èÁ¦ ÇÏ´Â Äڵ带 DeleteFile ÇÔ¼ö ¹× LB_DELETESTRING ¸Þ½ÃÁö¸¦ º¸³» µð·ºÅ͸® ¸ñ·Ï »óÀÚ ¾÷µ¥ÀÌÆ®.
#define BUFFER MAX_PATH
BOOL APIENTRY DlgDelFileProc(
HWND hDlg, // window handle to dialog box
UINT message, // type of message
UINT wParam, // message-specific information
LONG lParam)
{
DWORD cchCurDir;
LPTSTR lpszCurDir;
LPTSTR lpszFileToDelete;
int nItem;
int nTotal;
TCHAR tchBuffer[BUFFER];
BOOL fResult;
switch (message)
{
case WM_INITDIALOG:
// Initialize the list box by filling it with files from
// the current directory.
lpszCurDir = tchBuffer;
GetCurrentDirectory(cchCurDir, lpszCurDir);
DlgDirList(hDlg, lpszCurDir, IDL_FILES, IDS_PATHTOFILL, 0);
SetFocus(GetDlgItem(hDlg, IDL_FILES));
return FALSE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
// When the user presses the DEL (IDOK) button,
// delete the selected file.
lpszFileToDelete = tchBuffer;
DlgDirSelectEx(hDlg, lpszFileToDelete, MAX_PATH,
IDL_FILES);
fResult = DeleteFile(lpszFileToDelete);
if (!fResult)
{
MessageBox(hDlg, "Could not delete file.",
NULL, MB_OK);
}
else
{
nItem = SendMessage(GetDlgItem(hDlg,
IDL_FILES), LB_GETCURSEL, 0, 0);
nTotal = SendMessage(GetDlgItem(hDlg,
IDL_FILES), LB_DELETESTRING, nItem, 0);
// Update the list box.
if (nTotal > nItem)
{
SendMessage(GetDlgItem(hDlg, IDL_FILES),
LB_SETCURSEL, nItem, 0);
}
else
{
SendMessage(GetDlgItem(hDlg, IDL_FILES),
LB_SETCURSEL, nTotal, 0);
}
}
return TRUE;
case IDCANCEL:
// Destroy the dialog box.
EndDialog(hDlg, TRUE);
return TRUE;
default:
return FALSE;
}
default:
return FALSE;
}
}