关于openfiledialog的问题

lovefootball 2005-08-24 03:50:35
我想做一个自定义的open file dialog
我做了一个ie的扩展,就是如果显示风格是detail的时候,标题栏有我自定义的列
现在的问题是,当我用open file dialog的时候,也想像ie那样,记住我上次的选择
或者是实现默认显示风格是detail的,并且把我的自定义列显示出来也可以
我现在实现了默认显示风格是detail的,但是我想显示我自定义的列就出问题了
就是说在显示成detail的风格的时候,不能给他自定义显示列

不知道我说清楚了没有~~~~~
请各位帮帮我,谢谢了
...全文
425 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2005-08-31
  • 打赏
  • 举报
回复
我不知道如何控制文件夹视图的列的选择。你可以自己实现一个基于ListView的文件选择对话框。
老夏Max 2005-08-30
  • 打赏
  • 举报
回复
C#????俺不会!汗!
lovefootball 2005-08-30
  • 打赏
  • 举报
回复
up
lovefootball 2005-08-29
  • 打赏
  • 举报
回复
挨个分析啊?我跟了一下,每次选择列改变都有好多消息
看得我眼睛都花了
~~~~~~~~
lovefootball 2005-08-29
  • 打赏
  • 举报
回复
我只找到了LVM_DELETECOLUMN,HDM_DELETEITEM,LVM_INSERTCOLUMNW,HDM_INSERTITEMW

感觉好像还是少了几个

各位达人能不能帮我写一下这块的代码~~~~~~~~
everandforever 2005-08-29
  • 打赏
  • 举报
回复
你可以把明显不是的消息屏蔽掉,SPY++有选项
everandforever 2005-08-26
  • 打赏
  • 举报
回复
其中第一个问题就是。
然后定制其中的列,是用LVM_INSERTCOLUMN,LVM_DELETECOLUMN实现的。你可以用SPY++查看。
everandforever 2005-08-26
  • 打赏
  • 举报
回复
:) 你的第一个问题,MSDN中有。可以参考:
http://www.google.com/url?sa=U&start=1&q=http://msdn.microsoft.com/msdnmag/issues/04/03/CQA/&e=10342
lovefootball 2005-08-26
  • 打赏
  • 举报
回复
操作普通的listview跟操作对话框里的那个一样么?
everandforever 2005-08-26
  • 打赏
  • 举报
回复
那就只能用SPY++一个个分析那些消息了
lovefootball 2005-08-26
  • 打赏
  • 举报
回复
虽然是删除了,但是listview上右键菜单的对号并没有删掉,手动选择列的时候会出问题
everandforever 2005-08-26
  • 打赏
  • 举报
回复
再深入我就不知道了。
lovefootball 2005-08-26
  • 打赏
  • 举报
回复
楼上的
我就是用的
int hCtrl = FindWindowEx(GetParent(hdlg),0,"SHELLDLL_DefView","");//找到listview
SendMessage(hCtrl, WM_COMMAND, 28716, 0); //details
SendMessage(hCtrl, LVM_DELETECOLUMN, 1, 0);
这个,但是不起作用

能把LVM_DELETECOLUMN和LVM_INSERTCOLUMN介绍详细点么?
vcmute 2005-08-25
  • 打赏
  • 举报
回复
http://blog.joycode.com/jiangsheng/archive/2005/01/07/42514.aspx
lixiaosan 2005-08-25
  • 打赏
  • 举报
回复
你可以在CMyFileDialog中添加
#include <dlgs.h>

CMyFileDialog::OnInitDialog()
{
....
CWnd* p=GetParent();
if(p != NULL)
p->PostMessage(WM_COMMAND, 40964, NULL);

//得到listctrl的指针
CListCtrl *plist = (CListCtrl *)p->GetDlgItem(lst1);
....
}
lovefootball 2005-08-25
  • 打赏
  • 举报
回复
自己顶一下
换个问法
如果在vc中
想要实现打开文件对话框默认显示是detail的,并且显示的列不是默认的大小,种类,日期,而是大小,日期,备注
如何实现

主要是改变默认显示的列如何实现
lovefootball 2005-08-24
  • 打赏
  • 举报
回复
c#那个板块的没搞定,呵呵,所以来这里求助
大家给我个思路或者写好的例子都行,语言无所谓
lixiaosan 2005-08-24
  • 打赏
  • 举报
回复
c#.....???@#$@$!1

版块发错了,楼主~
lovefootball 2005-08-24
  • 打赏
  • 举报
回复
不好意思,我是c#写的,所以没贴出来
private int HookProc(int hdlg, int msg, int wParam, int lParam)
{
switch (msg)
{
case WM_NOTIFY:
if (iSetList != 2)
{
int hCtrl = FindWindowEx(GetParent(hdlg),0,CONTROL_LISTVIEW_NAME,"");//SysListView32
if(hCtrl != 0)
{
SendMessage(hCtrl, WM_COMMAND, GetViewMode(ViewMode), 0); //打开文件对话框,默认是detail风格,就是在这里,我怎么让它不显示默认的列,比如大小,种类。日期等,而去显示我自定义的列
}
iSetList++;
}

NMHDR nmhdr=(NMHDR)Marshal.PtrToStructure(new IntPtr(lParam), typeof(NMHDR));
if (nmhdr.Code == CDN_SELCHANGE)//选择文件改变,记住文件名称
{
int hCtrl1 = FindWindowEx(GetParent(hdlg),0,CONTROL_TEXT_NAME,"");//ComboBoxEx32
if(hCtrl1 != 0)
{
GetWindowText(hCtrl1,Buff,nChars);
strTemp = Buff.ToString();
}
}

break;

}
return 0;
}

整个的代码太多了,上面是我重写的hook,可以显示detail风格的,比如默认的大小,种类,更新日期
现在我想去掉这些列,默认显示其他的列,也就是我自定义的列

我实现的功能是把硬盘上的特定的文件中的内容解析出来,当是detail风格的时候,我就把他们按照选择的列显示出来

资源管理器可以记住我上次的操作,但是这个对话框记不住,所以我只好让它默认显示我定义的列
handsomerun 2005-08-24
  • 打赏
  • 举报
回复
帮楼主顶,楼主写了那么多,挺辛苦的,呵呵
加载更多回复(4)

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧