文件浏览和图片浏览
此示例代码展示如何使用文件浏览,图片浏览,文件保存和文件选择。
图片浏览:IMzSelect *pSelect = NULL; IPhotoViewer *pImage = NULL; CoInitializeEx(NULL, COINIT_MULTITHREADED ); if ( SUCCEEDED( CoCreateInstance( CLSID_PhotoView, NULL,CLSCTX_INPROC_SERVER ,IID_MZ_PhotoViewer,(void **)&pImage ) ) ) { if( SUCCEEDED( pImage->QueryInterface( IID_MZ_Select, (void**)&pSelect ) ) ) { pImage->SetParentWnd( m_hWnd ); pImage->SetSelectPhotoMode( SELECT_NORMAL ); pImage->SetCurrentImageFileName( L"\\Disk\\Temp.jpg " );//因为内部会做截屏操作,所以后缀名为.jpg和.png pSelect->Invoke(); pSelect->Release(); } pImage->Release(); } CoUninitialize();
文件选择:IMzSelect *pSelect = NULL; IFileBrowser *pFile = NULL; CoInitializeEx(NULL, COINIT_MULTITHREADED ); if ( SUCCEEDED( CoCreateInstance( CLSID_FileBrowser, NULL,CLSCTX_INPROC_SERVER ,IID_MZ_FileBrowser,(void **)&pFile ) ) ) { if( SUCCEEDED( pFile->QueryInterface( IID_MZ_Select, (void**)&pSelect ) ) ) { TCHAR file[ MAX_PATH ] = { 0 }; pFile->SetParentWnd( m_hWnd ); pFile->SetOpenDirectoryPath( L"\\Disk\\EBook" ); //如果不调用此函数则默认为根目录 pFile->SetExtFilter( L"*.txt;*.rar;" ); pFile->SetOpenDocumentType(DOCUMENT_SELECT_SINGLE_FILE); //应用根据需求进行文档打开方式的设置 if( pSelect->Invoke() ) {//各应用根据自己需求获取文档的返回值 _tcscpy( file, pFile->GetSelectedFileName() ); std::wstring displayText = L"选择的文件为:"; displayText += file; MzMessageBoxEx( m_hWnd, displayText.c_str(), L"Test" ); displayText.clear(); } pSelect->Release(); } pFile->Release(); } CoUninitialize(); ::InvalidateRect( m_hWnd, NULL, FALSE ); ::UpdateWindow( m_hWnd );
文件保存:IMzSave *pSave = NULL; IFileBrowser *pFile = NULL; CoInitializeEx(NULL, COINIT_MULTITHREADED ); if ( SUCCEEDED( CoCreateInstance( CLSID_FileBrowser, NULL,CLSCTX_INPROC_SERVER ,IID_MZ_FileBrowser,(void **)&pFile ) ) ) { if( SUCCEEDED( pFile->QueryInterface( IID_MZ_Save, (void**)&pSave ) ) ) { pFile->SetParentWnd( m_hWnd ); pFile->SetOpenDocumentType(DOCUMENT_SAVE_FILES); //应用根据需求进行文档打开方式的设置 pFile->SetOpenDirectoryPath( L"\\Disk\\EBook" ); if( pSave->Invoke() ) {//提供路径给应用进行保存操作 TCHAR saveDir[ MAX_PATH ] = { 0 }; _tcscpy( saveDir, pFile->GetSaveFileDirectory() ); std::wstring displayText = L"保存的路径为:"; displayText += saveDir; MzMessageBoxEx( m_hWnd, displayText.c_str(), L"Test" ); displayText.clear(); } pSave->Release(); } pFile->Release(); } CoUninitialize();
选择多个文件:IMzSelect *pSelect = NULL; IFileBrowser *pFile = NULL; CoInitializeEx(NULL, COINIT_MULTITHREADED ); if ( SUCCEEDED( CoCreateInstance( CLSID_FileBrowser, NULL,CLSCTX_INPROC_SERVER ,IID_MZ_FileBrowser,(void **)&pFile ) ) ) { if( SUCCEEDED( pFile->QueryInterface( IID_MZ_Select, (void**)&pSelect ) ) ) { TCHAR file[ MAX_PATH ] = { 0 }; pFile->SetParentWnd( m_hWnd ); pFile->SetOpenDirectoryPath( L"\\Disk" ); //如果不调用此函数则默认为根目录 pFile->SetOpenDocumentType(DOCUMENT_SELECT_FILES); //应用根据需求进行文档打开方式的设置 if( pSelect->Invoke() ) {//各应用根据自己需求获取文档的返回值 int selectedDirectoryCount = pFile->GetSelectedDirectoryCount(); int selectedFileCount = pFile->GetSelectedFileCount(); TCHAR temp[ MAX_PATH ] = { 0 }; wsprintf( temp, L"文件%d个, 目录%d个",selectedFileCount, selectedDirectoryCount ); MzMessageBoxEx( m_hWnd,temp, L"Test" ); for ( int i = 0; i < selectedDirectoryCount; i++ ) { _tcscpy( file, pFile->GetSelectedDirectoryPath( i ) ); std::wstring displayText = L"选择的目录为:"; displayText += file; MzMessageBoxEx( m_hWnd, displayText.c_str(), L"Test" ); displayText.clear(); } for ( int i = 0; i < selectedFileCount; i++ ) { _tcscpy( file, pFile->GetSelectedFilePath( i ) ); std::wstring displayText = L"选择的文件为:"; displayText += file; MzMessageBoxEx( m_hWnd, displayText.c_str(), L"Test" ); displayText.clear(); } } pSelect->Release(); } pFile->Release(); }
/************************************************************************/ /* * Copyright (C) Meizu Technology Corporation Zhuhai China * All rights reserved. * 中国珠海, 魅族科技有限公司, 版权所有. * * Author: * Create on: 2009-06-26 */ /************************************************************************/ //请按照以步骤运行此实例代码: //首先, 打开VS2005/2008创建一个Win 32智能设备项目 //在项目向导中选择M8SDK, 并勾选空项目 //然后,在项目中新建一个cpp文件,将此处代码拷贝到cpp文件中 //最后,按照M8SDK的帮助文档,配置项目属性 //现在,可以运行此程序了 //包含MZFC库的头文件 #include <mzfc_inc.h> #include <InitGuid.h> #include <IMzUnknown.h> #include <IMzUnknown_IID.h> #include <IPhotoViewer.h> #include <IPhotoViewer_GUID.h> #include <IFileBrowser.h> #include <IFileBrowser_GUID.h> //此代码演示了: // 创建和初始化应用程序 // 创建和初始化窗体 // 使用FileBrowser和PhotoViewer #define ID_TEST_SELECT_PHOTO_FROM_PHOTOVIEWER 101 #define ID_TEST_SELECT 102 #define ID_TEST_SAVE 103 #define ID_TEST_MULTI_FILE 104 // 从 CMzWndEx 派生的主窗口类 class CSample1MainWnd: public CMzWndEx { MZ_DECLARE_DYNAMIC(CSample1MainWnd); public: // 窗口中的按钮控件 UiButton m_testSelectBtn; UiButton m_testFileSelectBtn; UiButton m_testFileSaveBtn; UiButton m_testFileMultiSelectBtn; protected: // 窗口的初始化 virtual BOOL OnInitDialog() { // 必须先调用基类的初始化 if (!CMzWndEx::OnInitDialog()) { return FALSE; } m_testSelectBtn.SetPos( 100, 100, 200, 100 ); m_testSelectBtn.SetText( L"选择图片"); m_testSelectBtn.SetID( ID_TEST_SELECT_PHOTO_FROM_PHOTOVIEWER ); m_testSelectBtn.SetButtonType( MZC_BUTTON_DEFAULT ); AddUiWin( &m_testSelectBtn ); m_testFileSaveBtn.SetPos( 100, 200, 200, 100 ); m_testFileSaveBtn.SetText( L"文件保存" ); m_testFileSaveBtn.SetID( ID_TEST_SAVE ); m_testFileSaveBtn.SetButtonType( MZC_BUTTON_DEFAULT ); AddUiWin( &m_testFileSaveBtn ); m_testFileMultiSelectBtn.SetPos( 100, 400, 200, 100 ); m_testFileMultiSelectBtn.SetText( L"多个文件选择 " ); m_testFileMultiSelectBtn.SetID( ID_TEST_MULTI_FILE ); m_testFileMultiSelectBtn.SetButtonType( MZC_BUTTON_DEFAULT ); AddUiWin( &m_testFileMultiSelectBtn ); m_testFileSelectBtn.SetPos( 100, 500, 200, 100 ); m_testFileSelectBtn.SetText( L"文件选择" ); m_testFileSelectBtn.SetID( ID_TEST_SELECT ); m_testFileSelectBtn.SetButtonType( MZC_BUTTON_DEFAULT ); AddUiWin( &m_testFileSelectBtn ); return TRUE; } // 重载命令消息的处理函数 virtual void OnMzCommand(WPARAM wParam, LPARAM lParam) { UINT_PTR id = LOWORD(wParam); switch( id ) { case ID_TEST_SELECT_PHOTO_FROM_PHOTOVIEWER: { IMzSelect *pSelect = NULL; IPhotoViewer *pImage = NULL; CoInitializeEx(NULL, COINIT_MULTITHREADED ); if ( SUCCEEDED( CoCreateInstance( CLSID_PhotoView, NULL,CLSCTX_INPROC_SERVER ,IID_MZ_PhotoViewer,(void **)&pImage ) ) ) { if( SUCCEEDED( pImage->QueryInterface( IID_MZ_Select, (void**)&pSelect ) ) ) { pImage->SetParentWnd( m_hWnd ); pImage->SetSelectPhotoMode( SELECT_NORMAL ); pImage->SetCurrentImageFileName( L"\\Disk\\Temp.jpg " );//因为内部会做截屏操作,所以后缀名为.jpg和.png pSelect->Invoke(); pSelect->Release(); } pImage->Release(); } CoUninitialize(); } break; case ID_TEST_SELECT: { IMzSelect *pSelect = NULL; IFileBrowser *pFile = NULL; CoInitializeEx(NULL, COINIT_MULTITHREADED ); if ( SUCCEEDED( CoCreateInstance( CLSID_FileBrowser, NULL,CLSCTX_INPROC_SERVER ,IID_MZ_FileBrowser,(void **)&pFile ) ) ) { if( SUCCEEDED( pFile->QueryInterface( IID_MZ_Select, (void**)&pSelect ) ) ) { TCHAR file[ MAX_PATH ] = { 0 }; pFile->SetParentWnd( m_hWnd ); pFile->SetOpenDirectoryPath( L"\\Disk\\EBook" ); //如果不调用此函数则默认为根目录 pFile->SetExtFilter( L"*.txt;*.rar;" ); pFile->SetOpenDocumentType(DOCUMENT_SELECT_SINGLE_FILE); //应用根据需求进行文档打开方式的设置 if( pSelect->Invoke() ) {//各应用根据自己需求获取文档的返回值 _tcscpy( file, pFile->GetSelectedFileName() ); std::wstring displayText = L"选择的文件为:"; displayText += file; MzMessageBoxEx( m_hWnd, displayText.c_str(), L"Test" ); displayText.clear(); } pSelect->Release(); } pFile->Release(); } CoUninitialize(); ::InvalidateRect( m_hWnd, NULL, FALSE ); ::UpdateWindow( m_hWnd ); } break; case ID_TEST_MULTI_FILE: { IMzSelect *pSelect = NULL; IFileBrowser *pFile = NULL; CoInitializeEx(NULL, COINIT_MULTITHREADED ); if ( SUCCEEDED( CoCreateInstance( CLSID_FileBrowser, NULL,CLSCTX_INPROC_SERVER ,IID_MZ_FileBrowser,(void **)&pFile ) ) ) { if( SUCCEEDED( pFile->QueryInterface( IID_MZ_Select, (void**)&pSelect ) ) ) { TCHAR file[ MAX_PATH ] = { 0 }; pFile->SetParentWnd( m_hWnd ); pFile->SetOpenDirectoryPath( L"\\Disk" ); //如果不调用此函数则默认为根目录 pFile->SetOpenDocumentType(DOCUMENT_SELECT_FILES); //应用根据需求进行文档打开方式的设置 if( pSelect->Invoke() ) {//各应用根据自己需求获取文档的返回值 int selectedDirectoryCount = pFile->GetSelectedDirectoryCount(); int selectedFileCount = pFile->GetSelectedFileCount(); TCHAR temp[ MAX_PATH ] = { 0 }; wsprintf( temp, L"文件%d个, 目录%d个",selectedFileCount, selectedDirectoryCount ); MzMessageBoxEx( m_hWnd,temp, L"Test" ); for ( int i = 0; i < selectedDirectoryCount; i++ ) { _tcscpy( file, pFile->GetSelectedDirectoryPath( i ) ); std::wstring displayText = L"选择的目录为:"; displayText += file; MzMessageBoxEx( m_hWnd, displayText.c_str(), L"Test" ); displayText.clear(); } for ( int i = 0; i < selectedFileCount; i++ ) { _tcscpy( file, pFile->GetSelectedFilePath( i ) ); std::wstring displayText = L"选择的文件为:"; displayText += file; MzMessageBoxEx( m_hWnd, displayText.c_str(), L"Test" ); displayText.clear(); } } pSelect->Release(); } pFile->Release(); } CoUninitialize(); ::InvalidateRect( m_hWnd, NULL, FALSE ); ::UpdateWindow( m_hWnd ); } break; case ID_TEST_SAVE: { IMzSave *pSave = NULL; IFileBrowser *pFile = NULL; CoInitializeEx(NULL, COINIT_MULTITHREADED ); if ( SUCCEEDED( CoCreateInstance( CLSID_FileBrowser, NULL,CLSCTX_INPROC_SERVER ,IID_MZ_FileBrowser,(void **)&pFile ) ) ) { if( SUCCEEDED( pFile->QueryInterface( IID_MZ_Save, (void**)&pSave ) ) ) { pFile->SetParentWnd( m_hWnd ); pFile->SetOpenDocumentType(DOCUMENT_SAVE_FILES); //应用根据需求进行文档打开方式的设置 pFile->SetOpenDirectoryPath( L"\\Disk\\EBook" ); if( pSave->Invoke() ) {//提供路径给应用进行保存操作 TCHAR saveDir[ MAX_PATH ] = { 0 }; _tcscpy( saveDir, pFile->GetSaveFileDirectory() ); std::wstring displayText = L"保存的路径为:"; displayText += saveDir; MzMessageBoxEx( m_hWnd, displayText.c_str(), L"Test" ); displayText.clear(); } pSave->Release(); } pFile->Release(); } CoUninitialize(); } break; } } }; MZ_IMPLEMENT_DYNAMIC(CSample1MainWnd) // 从 CMzApp 派生的应用程序类 class CSample1App: public CMzApp { public: // 应用程序的主窗口 CSample1MainWnd m_MainWnd; // 应用程序的初始化 virtual BOOL Init() { // 初始化 COM 组件 CoInitializeEx(0, COINIT_MULTITHREADED); // 创建主窗口 RECT rcWork = MzGetWorkArea(); m_MainWnd.Create(rcWork.left,rcWork.top,RECT_WIDTH(rcWork),RECT_HEIGHT(rcWork), 0, 0, 0); m_MainWnd.Show(); // 成功则返回TRUE return TRUE; } }; // 全局的应用程序对象 CSample1App theApp;