在系统提供的标准打开/保存对话框中,右上角有几个快捷按钮,如:“到上一级目录”,“新建文件夹”等。
它们好像是toolbar,请问各位大虾,是否有方法对它们进行控制,使它们Enable或Disable. 
谢谢了

解决方案 »

  1.   

    to syy64(太平洋)
    我搜了一下,inside vc 第7章有一个改造文件打开对话框,往上面增加一个“delete all matching files”的按钮,你说的是这个例子么? 
    不过我不是想往标准对话框上增加按钮,而是想隐藏windows文件打开对话框上的那几个按钮。
      

  2.   

    找到好早的一个帖子
    关于CFileDialog对话框上的按钮
    楼主Pixie(笨笨虫)2000-09-16 17:21:00 在 VC/MFC / 基础类 提问        在系统提供的标准打开/保存对话框中,右上角有几个快捷按钮,如:“到上一级目录”,“新建文件夹”等。请问各位大虾,是否有方法对它们进行控制,使它们Enable或Disable. 问题点数:80、回复次数:6Top
    1 楼Holly()回复于 2000-09-16 18:55:00 得分 10系统没有公开它们的ID,它们是在一个ToolBarWindow上,因此还很难对按钮进行控制,倒是可以想办法自己构建一个,将原来的ToolBarWindow隐藏掉!Top
    2 楼RedFire(丹焰)回复于 2000-09-16 21:26:00 得分 0关注!Top
    3 楼andygood()回复于 2000-09-17 17:11:00 得分 0使用Hook,对进程内的相关消息进行处理。在CodeGuru上的对话框部分有相应的文章。Top
    4 楼lgs(老臭虫)回复于 2000-09-17 17:23:00 得分 0需要示例代码的可以找我!Top
    5 楼Pixie(笨笨虫)回复于 2000-09-17 20:44:00 得分 0lgs的回答已解决了我的问题,谢谢大家!
      

  3.   

    呵呵,刚刚做过一个类似的问题的程序。我们采用的方法是将这两个按钮删除掉,需要派生cfiledialog类,给你个代码吧,自己看。
    void CFileDialogEx::OnInitDone()
    {
    // Disable the selecting folder path Combo box 
    GetParent()->GetDlgItem(cmb2)->EnableWindow(FALSE); 
    // Disable the Edit control
    GetParent()->GetDlgItem(edt1)->EnableWindow(FALSE);  // Delete two buttons: "up" and "new" of the dialog's tool bar.
    CWnd *pwnd = GetParent()->GetWindow(GW_CHILD);
    if(pwnd)
    {
    char *buf = new char[512]; 
    ASSERT(buf);
    while(pwnd != NULL) 

    ::GetClassName(pwnd->GetSafeHwnd(), buf, 512); 
    CString str=buf; 
    str.TrimRight();  if(_T("ToolbarWindow32") == str)

    CToolBar* pToolBar = (CToolBar*) pwnd; 
    CToolBarCtrl* pToolBarCtrl = &(pToolBar->GetToolBarCtrl());
    ASSERT(pToolBar);
    ASSERT(pToolBarCtrl);

    pToolBarCtrl->DeleteButton(1); // delete "up" button
    pToolBarCtrl->DeleteButton(1); // delete "new" button
    }

    pwnd = pwnd->GetNextWindow(); 
    }
    delete[] buf;
    buf = NULL;
    }
    }