记录这个文章没别的意思就是当做是学习笔记,没什么技术含量,因为测试其他功能需要在界面上面方便把东西拷贝到电脑上面,使用需要在测试工程里面直接把windows的资源管理器展示出来,这个东西以前做过,但是代码丢了很久,mfc只是测试的时候用一下,基本没有去细挖,所以这次记录一下代码,这个也简单的显示了一些系统图标。
没什么东西直接上主要代码(系统自己带的代码能不上就不上了)。
BOOL Cwp8MtpTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//设置目录树样式
DWORD dwStyle = GetWindowLong(m_pcTreeCtrl.m_hWnd,GWL_STYLE);
dwStyle |= TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;
SetWindowLong(m_pcTreeCtrl.m_hWnd,GWL_STYLE,dwStyle);
//绑定图标链表
m_pcTreeCtrl.SetImageList(CFileIcon::GetSysImgList(), TVSIL_NORMAL);
m_hPCTreeRoot = m_pcTreeCtrl.InsertItem(_T("我的电脑"),1,1);
GetLogicalDrives(m_hPCTreeRoot);//获取本地驱动器加载到目录树
GetDriveDir(m_hPCTreeRoot); //获取驱动器下一级文件夹到目录树
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
// 获取盘符到目录树,作为根目录下一级节点
void Cwp8MtpTestDlg::GetLogicalDrives(HTREEITEM hRoot)
{
size_t szAllDrivesStrings = GetLogicalDriveStrings(0,NULL); //获取驱动器字符长度
WCHAR* pDriveStrings = new WCHAR[szAllDrivesStrings + sizeof(_T(""))];//定义字符串存储驱动器字符pDriveStrings
GetLogicalDriveStrings((DWORD)szAllDrivesStrings,pDriveStrings);//获取驱动器字符到pDriveStrings
//截取单个驱动器字符出来添加到目录树上
//定义临时字符指针指向驱动器字符信息
//(为了最后可以释放驱动器字符串方便,如果直接移动字符串指针,
//后面调用delete释放字符串资源的时候会报错)
WCHAR* pTempDrive = pDriveStrings;
size_t szDriveString = wcslen(pTempDrive);
while(szDriveString>0)
{
m_pcTreeCtrl.InsertItem(pTempDrive,2,2,hRoot);//加载解析后的一个驱动器信息到目录树
pTempDrive += szDriveString + 1;
szDriveString = wcslen(pTempDrive);
}
delete pDriveStrings;
}
// 获取驱动器下一级目录到目录树上显示
void Cwp8MtpTestDlg::GetDriveDir(HTREEITEM hRoot)
{
HTREEITEM hChild = m_pcTreeCtrl.GetChildItem(hRoot);//获取根节点下的第一个盘符节点
while(hChild)
{
//获取查找路径
CString strText = m_pcTreeCtrl.GetItemText(h