六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

win2000下“打開”對話框完成2000的風格綜述

[摘要]本人天大小碩,平時使用VC MFC處理圖像。我生成可執行程序的目的不求界面多么pp,只是覺得很簡單的windows界面應該可以讓人隨心所欲地為己所用,于是乎網上求知,現總結一下已經得到有關打開文件對話框的實現方法,希望可以給初學者添點樂趣。一般而言,在使用VC新建一個工程時可以選擇所要打開文件的后...
本人天大小碩,平時使用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;
   if (pTemplate != NULL)
   {
      ASSERT_VALID(pTemplate);
      _AfxAppendFilterSuffix(strFilter, dlgFile.m_ofn, pTemplate, &strDefault);
   }
   else
   {
      // do for all doc template
      POSITION pos = m_templateList.GetHeadPosition();
      BOOL bFirst = TRUE;
      while (pos != NULL)
      {
         CDocTemplate* pTemplate = (CDocTemplate*)m_templateList.GetNext(pos);
         _AfxAppendFilterSuffix(strFilter, dlgFile.m_ofn, pTemplate,
            bFirst ? &strDefault : NULL);
         bFirst = FALSE;
      }
   }

   // append the "*.*" all files filter
   CString allFilter;
   VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER));
   strFilter += allFilter;
   strFilter += (TCHAR)'\0';   // next string please
   strFilter += _T("*.*");
   strFilter += (TCHAR)'\0';   // last string
   dlgFile.m_ofn.nMaxCustFilter++;

   file://Filter文件加在這里!哈哈
   dlgFile.m_ofn.lpstrFilter = "圖象文件\0*.bmp;*.jpg\0所有文件\0*.*\0\0\0";
   dlgFile.m_ofn.lpstrTitle = title;
   dlgFile.m_ofn.lpstrFile = fileName.GetBuffer(_MAX_PATH);

   int nResult = dlgFile.DoModal();
   fileName.ReleaseBuffer();

   // modified 5-15-00 PD: delete dialog
   delete pDlg;

   return nResult == IDOK;
}


好啦,夠用了吧,很簡單了。


主站蜘蛛池模板: 婷婷深爱| 天天透天天干 | 日本老年人精品久久中文字幕 | 青娱乐在线免费观看 | 午夜大片免费完整在线看 | 日韩中文字幕高清在线专区 | 亚洲制服在线观看 | 亚洲女人被黑人巨大进入 | 天天草天天 | 四虎精品视频在线永久免费观看 | 亚洲成人三级 | 亚洲免费黄色网址 | 四虎在线视频免费观看 | 视频国产在线 | 日韩视频久久 | 亚洲 日本 欧美 | 青娱乐在线免费观看视频 | 在线观看h视频 | 天天视频国产精品 | 欧美中文在线观看 | 亚洲精品高清在线 | 亚洲色欲色欲www在线观看 | 天天夜夜操 | 四虎精品国产一区二区三区 | 日本免费久久 | 欧美线人一区二区三区 | 四虎在线观看视频 | 她也啪在线视频 | 天天看片中文字幕 | 欧美亚洲激情在线 | 热久久最新网址 | 在线视频自拍 | 天天射影院 | 中文乱码一二三四有限公司 | 一级免费黄色大片 | 天天干夜夜草 | 亚洲高清视频一区 | 欧美一级高清片欧美国产欧美 | 色噜噜狠狠网站 | 热久久这里是精品6免费观看 | 日韩第二页 |