在单选列表框中创建目录列表

【勇芳软件工作室】汉化HomePreviousNext

以下示例演示如何在列表框中显示当前目录的内容,并允许用户一次删除一个文件。

除了标准列表框样式之外,此列表框还包含LBS_MULTICOLUMN和LBS_HSCROLL样式。该代码通过使用DlgDirList函数来初始化列表框,以使用当前目录中的所有文件的名称填充列表框。当用户选择删除按钮时,DlgDirSelectEx功能将检索所选文件的名称。代码使用DeleteFile功能删除文件,并通过发送LB_DELETESTRING消息更新目录列表框。

#define BUFFER MAX_PATH

/*

*功能:DlgDelFileProc(HWND,无符号,UINT,LONG)

*

*目的:“删除文件”对话框

*/

BOOL APIENTRY DlgDelFileProc(

HWND hDlg,/ *对话框的窗口句柄* /

UINT消息,/ *消息类型* /

UINT wParam,/ *消息特定信息* /

LONG lParam)

{

DWORD cchCurDir;

LPTSTR lpszCurDir;

LPTSTR lpszFileToDelete;

int nItem;

int nTotal;

TCHAR tchBuffer[BUFFER];

BOOL fResult;

switch(message){

case WM_INITDIALOG:

/*

*通过从列表框中填入文件来初始化列表框

*当前目录。

*/

lpszCurDir = tchBuffer;

GetCurrentDirectory(cchCurDir, lpszCurDir);

DlgDirList(hDlg, lpszCurDir, IDL_FILES, IDS_PATHTOFILL, 0);

SetFocus(GetDlgItem(hDlg, IDL_FILES));

return FALSE;

case WM_COMMAND:

开关(LOWORD(wParam)){

case IDOK:

/*

*当用户按DEL(IDOK)按钮时,

*删除所选文件。

*/

lpszFileToDelete = tchBuffer;

DlgDirSelectEx(hDlg,lpszFileToDelete,MAX_PATH,

IDL_FILES);

fResult = DeleteFile(lpszFileToDelete);

if(!fResult){

MessageBox(hDlg,“无法删除文件”。

NULL, MB_OK);

}

else {

nItem = SendMessage(GetDlgItem(hDlg, IDL_FILES),

LB_GETCURSEL, 0, 0);

nTotal = SendMessage(GetDlgItem(hDlg,

IDL_FILES), LB_DELETESTRING, nItem, 0);

/ *更新列表框。*/

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:

/ *销毁对话框。*/

EndDialog(hDlg, TRUE);

return TRUE;

默认:

return FALSE;

}

默认:

return FALSE;

}

}