1.新建对话框MFC,在对话框上放一个ListCtrl
ID:IDC_PATH
View:Report
2.为ListCtrl添加变量
右击->添加变量m_wndPath
3.找到OnInitDialog()函数添加如下代码:
// TODO: 在此添加额外的初始化代码
m_wndPath.DeleteAllItems();//清空
m_wndPath.InsertColumn(0,_T(\"项目\"));//添加列
m_wndPath.InsertColumn(1,_T(\"所在路径\"));
m_wndPath.SetColumnWidth(0, 150);//设置列宽
m_wndPath.SetColumnWidth(1, 350);
m_wndPath.SetRedraw(FALSE);//防止重绘
int nIndex;
//char|TCHAR项目属性->字符集:使用多字节字符集
TCHAR Path[MAX_PATH+1];//TCHAR取代char MAX_PATH最长路径
nIndex=m_wndPath.InsertItem( 0,_T(\"Windows目录\") );
if( nIndex < 0 ) return TRUE;
GetWindowsDirectory(Path,MAX_PATH);//取得windows目录
m_wndPath.SetItemText( nIndex, 1, Path );
LPITEMIDLIST pidl;//桌面CSIDL_DESKTOPDIRECTORY
//用来得到系统的某些特定文件夹的位置信息
if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOPDIRECTORY,&pidl)))
{
if(SHGetPathFromIDList(pidl, Path))//功能是把项目标志符列表转换为文档系统路径
{
nIndex=m_wndPath.InsertItem( 0,_T(\"桌面\"));//成功则返回0
if( nIndex < 0 )
{
return TRUE;
}
m_wndPath.SetItemText( nIndex, 1, Path );
}
}
m_wndPath.SetRedraw(TRUE);//显示
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
4.char被TCHAR取代,若要用则:
项目属性->字符集:使用多字节字符集
参考代码:
m_wndPath.DeleteAllItems();
m_wndPath.InsertColumn(0,\"项目\");
m_wndPath.InsertColumn(1,\"所在路径\");
m_wndPath.SetColumnWidth(0, 150);
m_wndPath.SetColumnWidth(1, 350);
m_wndPath.SetRedraw(FALSE);
int nIndex;
const int nFolder[]={ CSIDL_ALTSTARTUP,CSIDL_APPDATA,CSIDL_BITBUCKET,CSIDL_COMMON_ALTSTARTUP,
CSIDL_COMMON_DESKTOPDIRECTORY,CSIDL_COMMON_FAVORITES,CSIDL_COMMON_PROGRAMS,
CSIDL_COMMON_STARTMENU,CSIDL_COMMON_STARTUP,CSIDL_CONTROLS,CSIDL_COOKIES,
CSIDL_DESKTOP,CSIDL_DESKTOPDIRECTORY,CSIDL_DRIVES,CSIDL_FAVORITES,CSIDL_FONTS,
CSIDL_HISTORY,CSIDL_INTERNET,CSIDL_INTERNET_CACHE,CSIDL_NETHOOD,CSIDL_NETWORK,
CSIDL_PERSONAL,CSIDL_PRINTERS,CSIDL_PRINTHOOD,CSIDL_PROGRAMS,CSIDL_RECENT,
CSIDL_SENDTO,CSIDL_STARTMENU,CSIDL_STARTUP,CSIDL_TEMPLATES };
const CString strFolderName[]={ \"CSIDL_ALTSTARTUP\",\"CSIDL_APPDATA\",\"回收站\",\"CSIDL_COMMON_ALTSTARTUP\",
\"CSIDL_COMMON_DESKTOPDIRECTORY\",\"CSIDL_COMMON_FAVORITES\",\"CSIDL_COMMON_PROGRAMS\",
\"CSIDL_COMMON_STARTMENU\",\"CSIDL_COMMON_STARTUP\",\"控制面板\",\"CSIDL_COOKIES\",
\"CSIDL_DESKTOP\",\"桌面\",\"我的电脑\",\"收藏夹\",\"字体\",
\"历史纪录\",\"CSIDL_INTERNET\",\"CSIDL_INTERNET_CACHE\",\"网上邻居\",\"CSIDL_NETWORK\",
\"我的文档\",\"打印机\",\"CSIDL_PRINTHOOD\",\"程序组\",\"最近打开的文档\",
\"发送\",\"任务条启动菜单目录\",\"启动目录\",\"临时文档\" };
char Path[MAX_PATH+1];
nIndex=m_wndPath.InsertItem( 0,\"Windows目录\" );
if( nIndex < 0 ) return TRUE;
GetWindowsDirectory(Path,MAX_PATH);
m_wndPath.SetItemText( nIndex, 1, Path );
nIndex=m_wndPath.InsertItem( 0,\"System目录\" );
if( nIndex < 0 ) return TRUE;
GetSystemDirectory(Path,MAX_PATH);
m_wndPath.SetItemText( nIndex, 1, Path );
int i,count=sizeof(nFolder)/sizeof(int);
for(i=0;i<count;i++)
{
LPITEMIDLIST pidl;
LPMALLOC pShellMalloc;
if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
{
if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,
nFolder[i],&pidl)))
{
if(SHGetPathFromIDList(pidl, Path))
{
nIndex=m_wndPath.InsertItem( 0,strFolderName[i] );
if( nIndex < 0 )
{
pShellMalloc->Free(pidl);
pShellMalloc->Release();
return TRUE;
}
m_wndPath.SetItemText( nIndex, 1, Path );
}
pShellMalloc->Free(pidl);
}
pShellMalloc->Release();
}
}
m_wndPath.SetRedraw(TRUE);
以上所述就是本文的全部内容了,希望大家能够喜欢。
本文地址:https://www.stayed.cn/item/17866
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我