介绍 那里有所有这些图像预览文件对话框。自Windows 2000缩略图视图模式以来,它们都已被弃用。(我的两个美分)。但是如何使对话框默认缩略视图?还有其他的观点吗? 背景 我张贴这个,因为它是我需要的东西。唯一的信息,我可以找到一些搜索是VB。感谢VBnet。这就是我对c++的采用。我使用的是WTL,但是MFC或任何其他C/ c++都可以从filedialog . h复制粘贴代码。 使用的代码 在ATL/WTL中,只需要包含filedialog . h并使用CFileDialogEx类,在此之前使用CFileDialog类。注意,最后添加的参数是一个枚举,表示需要的初始列表视图。它默认为SHVIEW_Default,意思是什么都不要做,让Windows顺其自然。在MFC和其他框架中,你应该钩住GetOpen/SaveFileDialog,并且在钩子例程中,覆盖WM_NOTIFY消息。在这里,执行CFileDialogEx::OnNotify所做的操作。确保链回默认处理,以免破坏文件对话框的功能。隐藏,Code
// // Any Example of an open Handler //
Hide副本,复制Code
LRESULT OnOpen(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { CMyFileDialog fileDlg( true , // TRUE for FileOpen, FALSE for FileSaveAs "*.*" , // LPCTSTR lpszDefExt = NULL, NULL , //,LPCTSTR lpszFileName = NULL, 0 , //dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Images *.bmp;*.dib;*.jpg;*.gif;*.png;*.ico " "All Files *.*",//LPCTSTR lpszFilter = NULL, m_hWnd , //HWND hWndParent = NULL SHVIEW_THUMBNAIL // which initial view ) ; fileDlg.DoModal() ; return 0 ; }
的兴趣点 Windows通用文件对话框代码对文件列表“SHELLDLL_DefView”(OCX)做了一些有趣的事情。它会在文件对话框的生命周期内多次破坏和重建它。通常,该列表在CDN_INITDONE通知代码中是不可用的。这就是为什么代码会检查所有WM_NOTIFY列表的存在,直到找到它,然后它就不再存在了。发送到列表的WM_COMMAND代码是由spy++提取的,是可以在Windows的未来版本中被更改的魔法数字。好吧,我希望微软能够监视CodeProject站点,并保持它的正常运行。 最后,这个和前面在Code-Project上的文件对话框定制可以给用户高度的控制她/他的文件对话框。所以,下次当我看到一个具有64x64图像预览和默认图标视图的绘图程序时,我个人会对它们感到不满。现在他们没有什么好借口了。 本文转载于:http://www.diyabc.com/frontweb/news438.html