网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
win2000下“打开”对话框实现2000的风格综述
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

本人天大小硕,平时使用VC MFC处理图像。我生成可执行程序的目的不求界面多么pp,只是觉得很简单的windows界面应该可以让人随心所欲地为己所用,于是乎网上求知,现总结一下已经得到有关打开文件对话框的实现方法,希望可以给初学者添点乐趣。

一般而言,在使用VC新建一个工程时可以选择所要打开文件的后缀来过滤出自己想得到的文件类型,然后在生成的程序中通过点击打开或者新建这样的按钮,在标准的windows对话框下实现文件的打开。可是我们看到默认的这个对话框并不是我们在win2000中所常见的那种左边也有选择框的标准对话框,而是老式的对话框,这一点影响了大家的心情了吧?MFC也有点欺人太甚了,哼哼。

当然这种现象不是不可以解决的,不是有CFileDialog么?只要自己来实现OnOpenFile,在其中使用CFielDialog不就可以了么。MSDN上也是这样来建议你设置自己的打开对话框的。有个很常见的文章讲到了这一点。由于MFC在文件对话框中都使用了对话框钩子函数,所以修改2000对话框的风格需要对OPENFILENAME结构中lStructSize的值做改动,变成88就行了。这是一种常见的方法,实际上就是进行了一些表面的工作,改改参数就可以了。

在实际MFC程序中,要是使用OnOpenDocument这个函数了的话,就不能通过简单的在OnOpenFile函数中使用CFielDialog来处理了。在MSDN上,有一个Q&A,给出了两个类来欺骗MFC从而实现真正自己改动的打开文件对话框。下面给出代码例子:

“2000形式的打开!”

原文章:http://msdn.microsoft.com/msdnmag/issues/0800/c/default.aspx

app.cpp中:

#include "StdAfx.h"
#include "TestFD.h"
#include "MainFrm.h"
#include "View.h"
#include "DocMgrEx.h"
#include "FileDialogEx.h"
#include "TraceWin.h"


BOOL CMyApp::InitInstance()
{
SetRegistryKey("MSJ");  // Save settings in registry, not INI file
LoadStdProfileSettings();  

// Load standard INI file options (including MRU)

file://加在这里哦!Flags和Filter加在CDocManagerEx.cpp中
// use extended CDocManager for new file open dialog
m_pDocManager = new CDocManagerEx;

AddDocTemplate(new CSingleDocTemplate(IDR_MAINFRAME,
  RUNTIME_CLASS(CMyDoc),
  RUNTIME_CLASS(CMainFrame),
  RUNTIME_CLASS(CMyView)));

// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
  return FALSE;

return TRUE;
}

CDocManagerEx.cpp中:

BOOL CDocManagerEx::DoPromptFileName(CString& fileName, UINT nIDSTitle,
   DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate)
{
   // modified 5-15-99 PD: call virtual fn to create dialog
   CFileDialog* pDlg = OnCreateFileDialog(bOpenFileDialog);
   ASSERT(pDlg);
   CFileDialog& dlgFile = *pDlg;
   
   CString title;
   VERIFY(title.LoadString(nIDSTitle));

   file://在这里改造文件打开的属性
   dlgFile.m_ofn.Flags |= OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT|OFN_ENABLEHOOK;//lFlags;

   CString strFilter;
   CString strDefault;
 &n
  • 上一篇资讯: Windows任务栏编程
  • 下一篇资讯: 谈在VC中动态改变菜单
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号