亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? filedlg.cpp

?? SHA家族加密算法實現方式, C語言版本
?? CPP
字號:

/********************************************************************

Copyright 2006-2008 ZHANG Luduo. All Rights Reserved.

Permission to use, copy, modify, distribute and sell this software
and its documentation for any purpose is hereby granted without fee,
provided that the above copyright notice appear in all copies and
that both that copyright notice and this permission notice appear
in supporting documentation.

********************************************************************/

/*

代碼說明 : 

	打開, 保存, 目錄瀏覽對話框之調用

聯系方式:

	作者  - 張魯奪
	MSN   - zhangluduo@msn.com
	Email - zhangluduo@163.com
	QQ群  - 34064264, 56918155

為所有愛我的人和我愛的人努力!

*/

#include "stdafx.h"
#include "FileDlg.h"
#include <memory.h> // for memset function

FileDlg::FileDlg()
{
	/** 判斷操作系統, 
		并根據操作系統填充結構體大小
	*/

	memset(&m_OFNOpen, 0, sizeof(OPENFILENAMEEX));

	memset(&m_OFNSave, 0, sizeof(OPENFILENAMEEX));
	
	memset(&m_BIFBrowse, 0, sizeof(BROWSEINFO));

	OSVERSIONINFOEX osvi;
	
	osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
	
	if(!GetVersionEx((OSVERSIONINFO *)&osvi)) return ;

	switch(osvi.dwPlatformId)
	{
	case VER_PLATFORM_WIN32_WINDOWS:
		if(	(osvi.dwMajorVersion==4 && osvi.dwMinorVersion ==10) || //win 98
			(osvi.dwMajorVersion==4 && osvi.dwMinorVersion ==90) || //win Me
			(osvi.dwMajorVersion==3 && osvi.dwMinorVersion ==51) || //win NT 3.51
			(osvi.dwMajorVersion==4 && osvi.dwMinorVersion ==0))	//win NT 4.0
		{
			m_OFNOpen.lStructSize = sizeof(OPENFILENAME);

			m_OFNSave.lStructSize = sizeof(OPENFILENAME);
		}
		break;
	case VER_PLATFORM_WIN32_NT:
		if(	(osvi.dwMajorVersion==5 && osvi.dwMinorVersion ==0) ||	//win 2000
			(osvi.dwMajorVersion==5 && osvi.dwMinorVersion ==1) ||	//win xp
			(osvi.dwMajorVersion==5 && osvi.dwMinorVersion ==2))	//win 2003
		{
			m_OFNOpen.lStructSize = sizeof(OPENFILENAMEEX);

			m_OFNSave.lStructSize = sizeof(OPENFILENAMEEX);
		}
		break;
	default:
		return ;
	}

	// 初始目錄

	char szAppName[MAX_PATH] = { 0 };

	GetModuleFileName(NULL, szAppName, MAX_PATH);
	
	string strAppName = szAppName;

	m_InitDir = strAppName.substr(0,strAppName.find_last_of("\\")+1);
}

FileDlg::~FileDlg()
{

}

UINT_PTR FileDlg::OpenProc(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if(uMsg == WM_INITDIALOG)
	{
		RECT rtWnd, rcSys;

		::GetWindowRect(GetParent(hWnd), &rtWnd);
		
		SystemParametersInfo(SPI_GETWORKAREA, 0, &rcSys, 0);
		
		::MoveWindow(GetParent(hWnd),
					(rcSys.right	- (rtWnd.right	- rtWnd.left))	/ 2,
					(rcSys.bottom	- (rtWnd.bottom	- rtWnd.top))	/ 2,
					rtWnd.right		- rtWnd.left,
					rtWnd.bottom	- rtWnd.top,
					true);
	}
	return 0;
}

UINT_PTR FileDlg::SaveProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	if(uMsg == WM_INITDIALOG)
	{
		RECT rtWnd, rcSys;

		::GetWindowRect(GetParent(hWnd), &rtWnd);
		
		SystemParametersInfo(SPI_GETWORKAREA, 0, &rcSys, 0);
		
		::MoveWindow(GetParent(hWnd),
					(rcSys.right	- (rtWnd.right	- rtWnd.left))	/ 2,
					(rcSys.bottom	- (rtWnd.bottom	- rtWnd.top))	/ 2,
					rtWnd.right		- rtWnd.left,
					rtWnd.bottom	- rtWnd.top,
					true);
	}
	return 0;
}

int FileDlg::BrowseProc(HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
	if(uMsg == WM_INITDIALOG)
	{
		RECT rtWnd, rcSys;

		::GetWindowRect(GetParent(hWnd), &rtWnd);
		
		SystemParametersInfo(SPI_GETWORKAREA, 0, &rcSys, 0);
		
		::MoveWindow(GetParent(hWnd),
					(rcSys.right	- (rtWnd.right	- rtWnd.left))	/ 2,
					(rcSys.bottom	- (rtWnd.bottom	- rtWnd.top))	/ 2,
					rtWnd.right		- rtWnd.left,
					rtWnd.bottom	- rtWnd.top,
					true);
	}

	// 初始化目錄

	if(uMsg == BFFM_INITIALIZED && !m_InitDir.empty()) ::SendMessage(hWnd, BFFM_SETSELECTION, 1, (WPARAM)m_InitDir.c_str());

	// 確定按鈕是否禁用
	
	if(uMsg == BFFM_SELCHANGED )
	{
		char buf[MAX_PATH] = { 0 };

		if(SHGetPathFromIDList((LPCITEMIDLIST)lParam, buf) && buf != 0)
		{
			::SendMessage(hWnd, BFFM_ENABLEOK, 0, 1);

			::SendMessage(hWnd, BFFM_SETSTATUSTEXT, 0, (LPARAM)buf);
		}
		else
		{
			::SendMessage(hWnd, BFFM_ENABLEOK, 0, 0);
		}
	}
	return 0;
}

vector<string> FileDlg::GetOpenFileName(HWND hWnd, bool bMulti, char* szFilter, char* szInitName)
{
	vector<string> Files;

	m_OpenNameBuf = new char[_FILEDLG_BUFSIZE + 1];
	
	memset(m_OpenNameBuf, 0, _FILEDLG_BUFSIZE + 1);
	
	if(szInitName != "\0") strcpy(m_OpenNameBuf, szInitName);

	m_OFNOpen.lpstrFile = m_OpenNameBuf;

	m_OFNOpen.nMaxFile = _FILEDLG_BUFSIZE;

	m_OFNOpen.Flags |= OFN_EXPLORER | OFN_ENABLEHOOK | OFN_FILEMUSTEXIST | OFN_ENABLESIZING;

	m_OFNOpen.hwndOwner = hWnd;
	
	m_OFNOpen.lpstrInitialDir = m_InitDir.c_str();
	
	m_OFNOpen.lpfnHook = (LPOFNHOOKPROC)m_ThunkOpen.Thiscall(this, Thunk::GetMemberFxnAddr(&FileDlg::OpenProc));

	if(szFilter == NULL) 
		m_OFNOpen.lpstrFilter = "所有文件 (*.*)\0*.*\0\0";
	else 
		m_OFNOpen.lpstrFilter = szFilter;

	if(bMulti) m_OFNOpen.Flags |= OFN_ALLOWMULTISELECT;	

	string strTmp = "";

	char* ptr = m_OFNOpen.lpstrFile;
	
	int nFiles = 0;

	if(!::GetOpenFileName(&m_OFNOpen))
	{
		delete[] m_OpenNameBuf;

		return Files;
	}

	while(*ptr++)
	{
		nFiles++;

		if(nFiles == 1)
		{
			strTmp = ptr - 1;

			if(strTmp[strTmp.size() - 1] != '\\')
			{
				strTmp += "\\";

				m_InitDir = strTmp;
			}
		}
		else if(nFiles >= 2)
		{
			Files.push_back(strTmp+(ptr - 1));
		}

		while(*ptr++);
	}
	if(Files.size() ==0 ) Files.push_back(m_OFNOpen.lpstrFile);

	// 返回

	delete[] m_OpenNameBuf;

	return Files;
}

string FileDlg::GetSaveFileName(HWND hWnd, bool AutoAddSuffixName, char* szFilter, char* szInitName)
{
	m_OFNSave.Flags	|= OFN_EXPLORER | OFN_ENABLEHOOK | OFN_OVERWRITEPROMPT | OFN_ENABLESIZING;

	m_OFNSave.hwndOwner = hWnd;
	
	m_OFNSave.lpfnHook = (LPOFNHOOKPROC)m_ThunkSave.Thiscall(this, Thunk::GetMemberFxnAddr(&FileDlg::SaveProc));

	m_SaveNameBuf = new char[_FILEDLG_BUFSIZE + 1];
	
	memset(m_SaveNameBuf, 0, _FILEDLG_BUFSIZE + 1);

	// 初始化文件名

	if(szInitName != "\0") strcpy(m_SaveNameBuf, szInitName);

	m_OFNSave.lpstrFile	= m_SaveNameBuf;

	m_OFNSave.nMaxFile = _FILEDLG_BUFSIZE;

	// 初始化目錄

	m_OFNSave.lpstrInitialDir = m_InitDir.c_str();

	if(szFilter == NULL)
		m_OFNSave.lpstrFilter = "所有文件 (*.*)\0*.*\0\0";
	else
		m_OFNSave.lpstrFilter = szFilter;	

	// 顯示保存對話框
	
	if(!::GetSaveFileName(&m_OFNSave))
	{
		delete[] m_SaveNameBuf;

//		CString str;
//		str.Format("Error Code = 0x%X, defined in file \"Cderr.h\"", CommDlgExtendedError());
//		AfxMessageBox(str);
		
		return "";
	}

	// 取文件名框中的輸入
	
	string strFileName = m_SaveNameBuf; 

	// 保存當前打開的目錄名
	
	m_InitDir = m_OFNSave.lpstrFile;

	m_InitDir = m_InitDir.substr(0,m_InitDir.find_last_of("\\")+1);

	// 是否為保存的文件名自動添加后綴名

	if(!AutoAddSuffixName)
	{
		delete[] m_SaveNameBuf;

		return strFileName;
	}

	// 判斷用戶填寫的文件名是否有后綴

	bool bSuffix = strFileName.find_last_of(".") == -1 ? false : true;

	if(bSuffix)
	{
		delete[] m_SaveNameBuf;

		return strFileName;
	}

	//將"過濾器"中的串以'\0'分隔成數組存放
	vector<string> FilterArray;
	
	char* p = (char*)m_OFNSave.lpstrFilter;

	int odd = 0;
	
	while(*p++)
	{
		odd++;
		if(odd == 2)
		{
			FilterArray.push_back(p - 1);

			odd = 0;
		}
		while(*p++);
	}

	// 如果過濾類型為"*.*",則不進行處理,直接返回

	string strFilter = FilterArray[m_OFNSave.nFilterIndex - 1];
	
	strFilter.erase(remove_if(strFilter.begin(), strFilter.end(), ptr_fun(::isspace)), strFilter.end());
	
	if(strFilter == "*.*")
	{
		delete[] m_SaveNameBuf;

		return strFileName;
	}

	// 取過濾器中的后綴名

	string	strSuffixName = strFilter.substr(strFilter.find_last_of(".") + 1);
	
	if(strSuffixName == "*")
	{
		delete[] m_SaveNameBuf;

		return strFileName;
	}

	if(!bSuffix)
	{
		delete[] m_SaveNameBuf;

		return strFileName + "." + strSuffixName;
	}

	delete[] m_SaveNameBuf;

	return strFileName;
}

string FileDlg::GetBrowseForFolder(HWND hWnd, char* szInitPath)
{
	m_BrowseNameBuf = new char[MAX_PATH + 1];

	memset(m_BrowseNameBuf, 0, MAX_PATH + 1);
	
	m_BIFBrowse.pszDisplayName = m_BrowseNameBuf;
	
	m_BIFBrowse.hwndOwner = hWnd;
	
	if(szInitPath != "\0") m_InitDir = szInitPath;
	
	m_BIFBrowse.lpszTitle = "請選擇文件夾:";
	
	m_BIFBrowse.pidlRoot = NULL;
	
	m_BIFBrowse.ulFlags	|= BIF_STATUSTEXT;
	
	m_BIFBrowse.lpfn = (BFFCALLBACK)m_ThunkBrowse.Thiscall(this, Thunk::GetMemberFxnAddr(&FileDlg::BrowseProc));
	
	LPCITEMIDLIST lpcitemidlist = SHBrowseForFolder(&m_BIFBrowse);

	if(lpcitemidlist)
	{
		if(SHGetPathFromIDList(lpcitemidlist, m_BrowseNameBuf))
		{
			if((int)m_BrowseNameBuf[strlen(m_BrowseNameBuf) - 1] == (int)'\\')
			{
				string strRetVal = m_BrowseNameBuf;

				delete[] m_BrowseNameBuf;
				
				return strRetVal;
			}
			else
			{
				string strRetVal = string(m_BrowseNameBuf) + "\\";
				
				delete[] m_BrowseNameBuf;
				
				return strRetVal;
			}
		}
	}

	delete[] m_BrowseNameBuf;

	return "";
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
777奇米成人网| 欧美日韩国产首页在线观看| 色综合久久久久久久久| 日韩免费在线观看| 亚洲精品成人悠悠色影视| 久久超级碰视频| 欧美综合一区二区| 国产精品久久久久aaaa樱花| 美女免费视频一区| 久久国产精品99精品国产 | 91在线视频在线| 欧美不卡在线视频| 亚洲韩国一区二区三区| 成人精品鲁一区一区二区| 日韩精品专区在线影院重磅| 亚洲综合网站在线观看| www..com久久爱| 国产婷婷一区二区| 美女一区二区三区| 91麻豆精品国产91久久久久久| 亚洲欧洲美洲综合色网| 国产又粗又猛又爽又黄91精品| 欧美另类z0zxhd电影| 亚洲欧美一区二区不卡| 99久久精品情趣| 亚洲欧美在线另类| 波多野结衣中文字幕一区| 精品88久久久久88久久久| 另类小说视频一区二区| 欧美日韩国产电影| 日韩国产在线观看| 欧美日韩另类一区| 亚洲1区2区3区视频| 欧美优质美女网站| 亚洲成av人影院| 91色.com| 亚洲在线观看免费视频| 欧洲一区二区三区在线| 亚洲国产精品一区二区尤物区| 91麻豆免费看| 亚洲蜜臀av乱码久久精品| 91在线国产福利| 亚洲精品成人a在线观看| 欧美三级视频在线观看| 亚洲18色成人| 日韩女同互慰一区二区| 国内一区二区视频| 国产日产欧美一区| 日本久久一区二区| 日精品一区二区| 精品999久久久| 99久久伊人久久99| 亚洲图片一区二区| 欧美一区二区三区免费大片| 国内精品视频一区二区三区八戒| 久久久高清一区二区三区| 成人av资源站| 亚洲h精品动漫在线观看| 欧美岛国在线观看| 成人自拍视频在线| 亚洲国产精品久久人人爱| 日韩一区二区三区观看| 成人午夜电影久久影院| 亚洲国产裸拍裸体视频在线观看乱了 | 不卡的av中国片| 夜夜揉揉日日人人青青一国产精品 | 国产成都精品91一区二区三| 亚洲免费三区一区二区| 欧美一区二区网站| 成人免费看黄yyy456| 亚洲国产精品一区二区www| 精品精品欲导航| 99国产精品国产精品毛片| 日韩中文字幕91| 国产精品色哟哟| 这里只有精品电影| 91污在线观看| 黄一区二区三区| 亚洲一区二区视频| 国产欧美一区二区三区鸳鸯浴| 欧美网站一区二区| 成人动漫一区二区| 久久69国产一区二区蜜臀| 亚洲精品videosex极品| 久久精品无码一区二区三区| 欧美日韩五月天| av不卡免费在线观看| 国产精品99久久久久久有的能看| 亚洲一区二区三区四区五区黄| 国产无人区一区二区三区| 欧美一区二区在线看| 91行情网站电视在线观看高清版| 国产精品自拍av| 蜜桃精品视频在线观看| 依依成人精品视频| 成人免费在线播放视频| 久久天天做天天爱综合色| 在线成人av影院| 欧美伊人久久久久久久久影院| 99亚偷拍自图区亚洲| 国产福利91精品| 国产又粗又猛又爽又黄91精品| 日本vs亚洲vs韩国一区三区| 亚洲午夜久久久久久久久电影网| 国产精品久久久久7777按摩 | 91精品国产综合久久小美女| 色综合中文字幕| 99精品国产91久久久久久| 国产98色在线|日韩| 国产精品亚洲一区二区三区在线 | 精品福利二区三区| 日韩三级免费观看| 欧美一级高清大全免费观看| 制服丝袜在线91| 欧美女孩性生活视频| 欧美精品在线一区二区| 欧美三级电影网| 欧美视频完全免费看| 欧美亚洲高清一区| 欧美日韩1234| 日韩一区二区精品葵司在线 | 欧美日韩色综合| 欧美久久久久免费| 日韩一区二区电影在线| 欧美大胆人体bbbb| 精品欧美一区二区三区精品久久| 精品国产欧美一区二区| 精品卡一卡二卡三卡四在线| 国产日韩欧美高清| **欧美大码日韩| 亚洲国产精品一区二区尤物区| 五月天亚洲精品| 麻豆专区一区二区三区四区五区| 精久久久久久久久久久| 国产福利精品一区二区| a4yy欧美一区二区三区| 欧美三电影在线| 欧美videos中文字幕| 国产欧美日韩久久| 亚洲精品欧美综合四区| 日韩不卡手机在线v区| 国产乱人伦偷精品视频不卡 | 黑人精品欧美一区二区蜜桃| 粉嫩嫩av羞羞动漫久久久 | 成人午夜在线视频| 欧美在线不卡一区| 精品少妇一区二区三区视频免付费| 精品国产伦一区二区三区观看方式 | 亚洲成人精品影院| 激情综合色综合久久综合| 成人在线视频首页| 欧美酷刑日本凌虐凌虐| 国产午夜亚洲精品羞羞网站| 亚洲美女视频在线| 日本伊人色综合网| 9i在线看片成人免费| 日韩一区二区精品| 亚洲日本在线天堂| 老司机精品视频导航| 色婷婷av一区| 久久久亚洲午夜电影| 午夜精品久久久久久久久久久| 国产精品888| 欧美一区二区在线看| 亚洲天堂中文字幕| 韩国精品主播一区二区在线观看 | 亚洲精品一区二区三区四区高清| 日韩毛片一二三区| 国产一区在线精品| 欧美精品高清视频| 亚洲日本一区二区三区| 国产综合久久久久久鬼色| 欧美三片在线视频观看| 日本一区二区成人在线| 蜜桃视频在线一区| 欧美色国产精品| |精品福利一区二区三区| 国模大尺度一区二区三区| 欧美精品乱码久久久久久按摩| 日韩一区在线免费观看| av激情亚洲男人天堂| 欧美成人欧美edvon| 亚洲成a人v欧美综合天堂下载| 91首页免费视频| 中文字幕不卡在线观看| 国产一区二区视频在线| 日韩欧美高清一区| 日韩av一区二| 欧美精品v国产精品v日韩精品| 亚洲精品中文字幕在线观看| 99久久99久久综合| 中文字幕在线观看不卡| 成人开心网精品视频| 国产亚洲成aⅴ人片在线观看| 激情亚洲综合在线| 欧美成人福利视频| 久久精品二区亚洲w码| 日韩一区二区中文字幕| 麻豆精品久久久| 欧美精品一区二区三区视频 |