www.pudn.com > chaos.rar   To Read all the content


[file head]:
// 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)
{
... ...

[file tail]:
... ...
ñÊÇ·ñ¹ý´ó
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;
}
}