我住包子山

this->blog.MoveTo("blog.baozishan.in")

浏览文件夹对话框,演示SHBrowseForFolder用法

image
/********************************************************************
  created:  2008/04/24
  created:  24:4:2008   12:47
  author:    Gohan
                http://feed.feedsky.com/gohan
  purpose:  演示SHBrowseForFolder用法
*********************************************************************/
#include <Windows.h>
#include <ShlObj.h>
int main()
{
   
BROWSEINFO bi;
   
ZeroMemory(&bi,sizeof(BROWSEINFO));
   
LPMALLOC pMalloc;
   
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
   
TCHAR * path = new TCHAR[MAX_PATH];
   
if(pidl != NULL)
    {
       
SHGetPathFromIDList(pidl,path);
       
MessageBox(NULL,path,TEXT("Choose"),MB_OK);
       
if(SUCCEEDED(SHGetMalloc(&pMalloc)))//pidl指向的对象用完应该释放,之前忽略了
        {
           
pMalloc->Free(pidl);
           
pMalloc->Release();
        }
    }
   
else
    {
       
MessageBox(NULL,TEXT("选择为空"),TEXT("Choose"),MB_OK);
    }
   
delete path;//谢谢true的提醒,以后我一定会更加慎重
}

posted on 2008-04-24 13:15 Gohan 阅读(11220) 评论(16)  编辑 收藏 引用 所属分类: C++MFC/SDK

Feedback

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法[未登录] 2008-04-24 18:21 true

TCHAR * path = new TCHAR[MAX_PATH];
delete path;  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2008-04-24 20:34 Z_song

正好要用,感谢中。。。  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2008-04-25 21:19 wangyucao

你也很努力啊!!呵呵  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2008-05-21 23:56 ershu

delete [] path;

好好学习吧  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2008-05-22 22:38 Gohan

@ershu
朋友,针对字符串,delete []与delete是等价的(至少在目前的VC++下)。这点我是学习过的,至于动态开的数组则必须加[]  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2008-05-30 23:16 hoodlum1980

放在你这里,delete不加也可以,因为你的程序马上就要退出了,这个进程中申请的内存也就会被系统给收回。但是如果你的程序还在运行,则最好自己管理号自己的内存。  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2008-05-31 19:07 Gohan

@hoodlum1980
对的,养成好的编程习惯,:)  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2008-06-12 10:12 tmp

MessageBox(NULL,TEXT("),TEXT("Choose"),MB_OK);
这里少了个引号,呵呵  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2008-06-12 13:44 Gohan

@tmp
呵呵,谢谢你,你很细心,我用一个叫code2html的程序把code转成html,它有点bug,有中文字符串会丢掉引号:),已改正  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2008-06-24 13:58 ailee

正好要用,谢了.  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2008-10-20 11:16 过客001

很好,。可以用的,谢谢楼主的资料。
能否在文章中做个连接
连接到可以选定文件而不只是文件夹的代码吗  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2008-12-08 09:38 Naran

受益了 谢谢了  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2009-02-10 11:00 HotSoftG

CAutoPtr<TCHAR> path(new TCHAR[MAX_PATH]);
  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2009-02-19 19:46 Gohan

@HotSoftG
自销毁的智能指针确实更易用  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2010-10-25 08:59 YiLi

MAX_PATH是常量, 所以这里不一定非要new
直接TCHAR path[MAX_PATH];这样也是没有问题的  回复  更多评论   

# re: 浏览文件夹对话框,演示SHBrowseForFolder用法 2011-01-18 09:10 企业即时通讯

受益了,很好。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理