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

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

?? ch1_1doc.cpp

?? 《Visual C++數字圖像處理》配套源代碼
?? CPP
字號:
// ch1_1Doc.cpp : implementation of the CCh1_1Doc class
//

#include "stdafx.h"
#include "ch1_1.h"

#include "ch1_1Doc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCh1_1Doc

IMPLEMENT_DYNCREATE(CCh1_1Doc, CDocument)

BEGIN_MESSAGE_MAP(CCh1_1Doc, CDocument)
	//{{AFX_MSG_MAP(CCh1_1Doc)
	ON_COMMAND(ID_FILE_REOPEN, OnFileReopen)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCh1_1Doc construction/destruction

CCh1_1Doc::CCh1_1Doc()
{
	// 默認背景色,灰色
	m_refColorBKG = 0x00808080;	
	
	// 初始化變量
	m_hDIB = NULL;
	m_palDIB = NULL;
	m_sizeDoc = CSize(1,1);
}

CCh1_1Doc::~CCh1_1Doc()
{
	// 判斷DIB對象是否存在
	if (m_hDIB != NULL)
	{
		// 清除DIB對象
		::GlobalFree((HGLOBAL) m_hDIB);
	}
	
	// 判斷調色板是否存在
	if (m_palDIB != NULL)
	{
		// 清除調色板
		delete m_palDIB;
	}
}

BOOL CCh1_1Doc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CCh1_1Doc diagnostics

#ifdef _DEBUG
void CCh1_1Doc::AssertValid() const
{
	CDocument::AssertValid();
}

void CCh1_1Doc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CCh1_1Doc commands

BOOL CCh1_1Doc::CanCloseFrame(CFrameWnd* pFrame) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDocument::CanCloseFrame(pFrame);
}

void CCh1_1Doc::DeleteContents() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	CDocument::DeleteContents();
}

BOOL CCh1_1Doc::OnOpenDocument(LPCTSTR lpszPathName) 
{
	CFile file;
	CFileException fe;

	// 打開文件
	if (!file.Open(lpszPathName, CFile::modeRead | CFile::shareDenyWrite, &fe))
	{
		// 失敗
		ReportSaveLoadException(lpszPathName, &fe,
			FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
		
		// 返回FALSE
		return FALSE;
	}
	
	DeleteContents();
	
	// 更改光標形狀
	BeginWaitCursor();
	
	// 嘗試調用ReadDIBFile()讀取圖像
	TRY
	{
		m_hDIB = ::ReadDIBFile(file);
	}
	CATCH (CFileException, eLoad)
	{
		// 讀取失敗
		file.Abort();
		
		// 恢復光標形狀
		EndWaitCursor();
		
		// 報告失敗
		ReportSaveLoadException(lpszPathName, eLoad,
			FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
		
		// 設置DIB為空
		m_hDIB = NULL;
		
		// 返回FALSE
		return FALSE;
	}
	END_CATCH
	
	// 初始化DIB
	InitDIBData();
	
	// 恢復光標形狀
	EndWaitCursor();
	
	// 判斷讀取文件是否成功
	if (m_hDIB == NULL)
	{
		// 失敗,可能非BMP格式
		CString strMsg;
		strMsg = "讀取圖像時出錯!可能是不支持該類型的圖像文件!";
		
		// 提示出錯
		MessageBox(NULL, strMsg, "系統提示", MB_ICONINFORMATION | MB_OK);
		
		// 返回FALSE
		return FALSE;
	}
	
	// 設置文件名稱
	SetPathName(lpszPathName);
	
	// 初始化脹標記為FALSE
	SetModifiedFlag(FALSE);
	
	// 返回TRUE
	return TRUE;
}

void CCh1_1Doc::OnFileReopen() 
{
 	// 重新打開圖像,放棄所有修改
 
	// 判斷當前圖像是否已經被改動
	if (IsModified())
	{
		// 提示用戶該操作將丟失所有當前的修改
		if (MessageBox(NULL, "重新打開圖像將丟失所有改動!是否繼續?", "系統提示", MB_ICONQUESTION | MB_YESNO) == IDNO)
		{
			// 用戶取消操作,直接返回
			return;
		}
	}
	
	CFile file;
 	CFileException fe;
 
 	CString strPathName;
  	
	// 獲取當前文件路徑
 	strPathName = GetPathName();
 
 	// 重新打開文件
 	if (!file.Open(strPathName, CFile::modeRead | CFile::shareDenyWrite, &fe))
 	{
 		// 失敗
 		ReportSaveLoadException(strPathName, &fe,
 			FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
 		
 		// 返回
 		return;
 	}
 	
 	// 更改光標形狀
 	BeginWaitCursor();
 	
 	// 嘗試調用ReadDIBFile()讀取圖像
 	TRY
 	{
 		m_hDIB = ::ReadDIBFile(file);
 	}
 	CATCH (CFileException, eLoad)
 	{
 		// 讀取失敗
 		file.Abort();
 		
 		// 恢復光標形狀
 		EndWaitCursor();
 		
 		// 報告失敗
 		ReportSaveLoadException(strPathName, eLoad,
 			FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);
 		
 		// 設置DIB為空
 		m_hDIB = NULL;
 		
 		// 返回
 		return;
 	}
 	END_CATCH
 	
 	// 初始化DIB
 	InitDIBData();
 	
 	// 判斷讀取文件是否成功
 	if (m_hDIB == NULL)
 	{
 		// 失敗,可能非BMP格式
 		CString strMsg;
 		strMsg = "讀取圖像時出錯!可能是不支持該類型的圖像文件!";
 		
 		// 提示出錯
 		MessageBox(NULL, strMsg, "系統提示", MB_ICONINFORMATION | MB_OK);
  		
 		// 恢復光標形狀
 		EndWaitCursor();
 		
 		// 返回
 		return;
 	}
 	
 	// 初始化脹標記為FALSE
 	SetModifiedFlag(FALSE);
 	
 	// 刷新
 	UpdateAllViews(NULL);
  	
 	// 恢復光標形狀
 	EndWaitCursor();
	
 	// 返回
 	return;
 	
}

BOOL CCh1_1Doc::OnSaveDocument(LPCTSTR lpszPathName) 
{
	CFile file;
	CFileException fe;

	// 打開文件
	if (!file.Open(lpszPathName, CFile::modeCreate |
	  CFile::modeReadWrite | CFile::shareExclusive, &fe))
	{
		// 失敗
		ReportSaveLoadException(lpszPathName, &fe,
			TRUE, AFX_IDP_INVALID_FILENAME);
		
		// 返回FALSE
		return FALSE;
	}

	// 嘗試調用SaveDIB保存圖像
	BOOL bSuccess = FALSE;
	TRY
	{
		
		// 更改光標形狀
		BeginWaitCursor();

		// 嘗試保存圖像
		bSuccess = ::SaveDIB(m_hDIB, file);

		// 關閉文件
		file.Close();
	}
	CATCH (CException, eSave)
	{
		// 失敗
		file.Abort();
		
		// 恢復光標形狀
		EndWaitCursor();
		ReportSaveLoadException(lpszPathName, eSave,
			TRUE, AFX_IDP_FAILED_TO_SAVE_DOC);
		
		// 返回FALSE
		return FALSE;
	}
	END_CATCH

	// 恢復光標形狀
	EndWaitCursor();
	
	// 重置脹標記為FALSE
	SetModifiedFlag(FALSE);

	if (!bSuccess)
	{
		// 保存失敗,可能是其它格式的DIB,可以讀取但是不能保存
		// 或者是SaveDIB函數有誤

		CString strMsg;
		strMsg = "無法保存BMP圖像!";
		
		// 提示出錯
		MessageBox(NULL, strMsg, "系統提示", MB_ICONINFORMATION | MB_OK);
	}
	
	return bSuccess;
}

void CCh1_1Doc::ReplaceHDIB(HDIB hDIB)
{
	// 替換DIB,在功能粘貼中用到該函數
	
	// 判斷DIB是否為空
	if (m_hDIB != NULL)
	{
		// 非空,則清除
		::GlobalFree((HGLOBAL) m_hDIB);
	}

	// 替換成新的DIB對象
	m_hDIB = hDIB;
	
}

void CCh1_1Doc::InitDIBData()
{
	// 初始化DIB對象

	// 判斷調色板是否為空
	if (m_palDIB != NULL)
	{
		// 刪除調色板對象
		delete m_palDIB;

		// 重置調色板為空
		m_palDIB = NULL;
	}
	
	// 如果DIB對象為空,直接返回
	if (m_hDIB == NULL)
	{
		// 返回
		return;
	}
	
	LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) m_hDIB);
	
	// 判斷圖像是否過大
	if (::DIBWidth(lpDIB) > INT_MAX ||::DIBHeight(lpDIB) > INT_MAX)
	{
		::GlobalUnlock((HGLOBAL) m_hDIB);
		
		// 釋放DIB對象
		::GlobalFree((HGLOBAL) m_hDIB);
		
		// 設置DIB為空
		m_hDIB = NULL;
		
		CString strMsg;
		strMsg = "BMP圖像太大!";
		
		// 提示用戶
		MessageBox(NULL, strMsg, "系統提示", MB_ICONINFORMATION | MB_OK);
		
		// 返回
		return;
	}
	
	// 設置文檔大小
	m_sizeDoc = CSize((int) ::DIBWidth(lpDIB), (int) ::DIBHeight(lpDIB));
	
	::GlobalUnlock((HGLOBAL) m_hDIB);
	
	// 創建新調色板
	m_palDIB = new CPalette;
	
	// 判斷是否創建成功
	if (m_palDIB == NULL)
	{
		// 失敗,可能是內存不足
		::GlobalFree((HGLOBAL) m_hDIB);
		
		// 設置DIB對象為空
		m_hDIB = NULL;
		
		// 返回
		return;
	}
	
	// 調用CreateDIBPalette來創建調色板
	if (::CreateDIBPalette(m_hDIB, m_palDIB) == NULL)
	{
		// 返回空,可能該DIB對象沒有調色板
		
		// 刪除
		delete m_palDIB;
		
		// 設置為空
		m_palDIB = NULL;
		
		// 返回
		return;
	}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
eeuss国产一区二区三区| 亚洲欧美日韩中文字幕一区二区三区 | 99亚偷拍自图区亚洲| 日本高清不卡aⅴ免费网站| 欧美高清dvd| 久久久久久夜精品精品免费| 国产精品的网站| 日韩经典中文字幕一区| 国产91对白在线观看九色| 欧美在线看片a免费观看| 日韩欧美一区在线观看| 国产精品欧美一区喷水| 亚洲成人中文在线| 欧美日韩三级视频| 日韩精品一区二区三区视频在线观看| 欧美国产视频在线| 丝袜诱惑制服诱惑色一区在线观看| 国产一区欧美一区| 91在线视频播放| 精品国产髙清在线看国产毛片| 亚洲三级电影全部在线观看高清| 蜜臀99久久精品久久久久久软件| 91网站在线播放| 精品第一国产综合精品aⅴ| 亚洲理论在线观看| 国产成人福利片| 欧美一区二区精品久久911| 成人免费视频在线观看| 伦理电影国产精品| 在线这里只有精品| 久久精品欧美一区二区三区不卡| 午夜精品久久久久久久蜜桃app| 粉嫩蜜臀av国产精品网站| 91精品国产综合久久精品麻豆 | jlzzjlzz欧美大全| 日韩视频永久免费| 亚洲在线一区二区三区| 国产成人av资源| 精品少妇一区二区三区在线视频| 一区二区三区成人| 99久久久精品免费观看国产蜜| 26uuu国产在线精品一区二区| 亚洲二区在线视频| 色综合婷婷久久| 中文字幕久久午夜不卡| 老司机精品视频一区二区三区| 欧美怡红院视频| 亚洲丝袜美腿综合| 成人性生交大片免费看视频在线| 精品国精品自拍自在线| 日韩精品一级中文字幕精品视频免费观看 | 在线电影院国产精品| 亚洲蜜臀av乱码久久精品| 国产不卡在线播放| 久久久蜜桃精品| 久久国产视频网| 欧美一级欧美三级在线观看| 午夜伊人狠狠久久| 色呦呦日韩精品| 亚洲男女毛片无遮挡| yourporn久久国产精品| 国产精品久久久久久久午夜片| 国产一区二区三区在线看麻豆| 精品国产不卡一区二区三区| 麻豆视频一区二区| 91精品国产91久久综合桃花 | 在线电影欧美成精品| 亚洲一区二区三区四区五区黄 | 一区二区三区日韩精品| 一本大道久久a久久综合| 亚洲日本青草视频在线怡红院| 91网页版在线| 亚洲激情校园春色| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲欧美经典视频| 在线观看亚洲精品视频| 亚洲一区二区欧美激情| 欧美午夜电影一区| 婷婷综合久久一区二区三区| 欧美男生操女生| 美国av一区二区| 精品国产人成亚洲区| 国产一区二区三区观看| 国产清纯在线一区二区www| 不卡的av中国片| 亚洲免费在线播放| 国产精品无圣光一区二区| 国产激情一区二区三区四区| 亚洲国产精品精华液2区45| 成人天堂资源www在线| √…a在线天堂一区| 欧美自拍偷拍一区| 日本欧美在线观看| 精品久久久久久最新网址| 九色综合国产一区二区三区| 亚洲国产成人私人影院tom | 婷婷国产在线综合| 日韩一卡二卡三卡国产欧美| 国产在线精品一区二区三区不卡 | 床上的激情91.| 亚洲视频每日更新| 欧美日韩久久久| 久久精品国产色蜜蜜麻豆| www久久精品| 91麻豆免费观看| 日本不卡免费在线视频| 久久精品亚洲国产奇米99| 97国产精品videossex| 夜夜精品视频一区二区 | 精品亚洲成a人| 国产精品国产三级国产普通话蜜臀 | 欧美videos中文字幕| jlzzjlzz国产精品久久| 日韩精品免费专区| 国产夜色精品一区二区av| 99国产精品视频免费观看| 日本麻豆一区二区三区视频| 国产精品女上位| 在线电影欧美成精品| 岛国av在线一区| 天堂成人国产精品一区| 欧美国产亚洲另类动漫| 欧美网站大全在线观看| 国产激情91久久精品导航 | 欧美电影影音先锋| 福利一区二区在线| 天堂va蜜桃一区二区三区| 国产精品久久久久久亚洲毛片| 正在播放一区二区| 成人毛片老司机大片| 日韩精品一卡二卡三卡四卡无卡| 国产精品网曝门| 欧美电影影音先锋| 97久久超碰国产精品| 久久69国产一区二区蜜臀| 亚洲精品日产精品乱码不卡| 精品欧美一区二区在线观看 | 日韩av中文字幕一区二区三区| 国产精品精品国产色婷婷| 日韩女优制服丝袜电影| 欧美色综合网站| 成人sese在线| 国产精品系列在线观看| 日日欢夜夜爽一区| 精品中文字幕一区二区 | 精品嫩草影院久久| 欧美综合色免费| 91在线丨porny丨国产| 国产盗摄视频一区二区三区| 奇米精品一区二区三区在线观看一| 亚洲私人黄色宅男| 中文字幕 久热精品 视频在线| 日韩免费高清视频| 欧美人妖巨大在线| 在线看不卡av| 99久久99久久免费精品蜜臀| 国产成人亚洲综合a∨婷婷| 经典三级在线一区| 日韩成人一区二区三区在线观看| 亚洲一区在线观看免费 | 欧美日韩视频在线一区二区| 色综合一区二区三区| 国产成人免费xxxxxxxx| 国产一区二区影院| 黑人巨大精品欧美黑白配亚洲| 免费看精品久久片| 日av在线不卡| 日韩精品欧美精品| 五月婷婷综合在线| 亚洲成人自拍网| 亚洲成av人片| 亚洲亚洲人成综合网络| 一区二区三区中文在线观看| 亚洲精品国产无套在线观| 日韩毛片一二三区| 亚洲欧美影音先锋| 中文字幕中文字幕在线一区| 国产精品视频九色porn| 中文字幕亚洲在| 亚洲女人小视频在线观看| 亚洲欧美成人一区二区三区| 樱桃视频在线观看一区| 一区二区视频在线| 亚洲综合在线第一页| 亚洲国产日韩综合久久精品| 亚洲一区二区三区视频在线播放| 亚洲色图欧美在线| 亚洲激情综合网| 香蕉久久一区二区不卡无毒影院| 丝袜国产日韩另类美女| 奇米一区二区三区| 国产一区二区久久| 丰满少妇在线播放bd日韩电影| 成人91在线观看| 欧美最新大片在线看| 欧美久久一区二区| 精品国产免费人成在线观看| 久久青草欧美一区二区三区| 国产精品视频九色porn| 亚洲欧美日韩一区|