📄 scgdiplus.cpp
字号:
/*
* This file is part of the EMFexplorer projet.
* Copyright (C) 2004 Smith Charles.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*
* Extension: for commercial use, apply the Equity Public License, which
* adds to the normal terms of the GLPL a condition of donation to the author.
* If you are interested in support for this source code,
* contact Smith Charles <smith.charles@free.fr> for more information.
*/
#include "stdafx.h"
#include "SCGDIPlus.h"
using namespace Gdiplus;
// #ifdef _DEBUG
// #define new DEBUG_NEW
// #undef THIS_FILE
// static char THIS_FILE[] = __FILE__;
// #endif
CSCGDIPlus::CSCGDIPlus():
m_GdiplusStartupInput(),
m_bInitialized(FALSE),
m_pGdiplusToken(NULL),
m_dwRefCount(0)
{
::InitializeCriticalSection(&m_lRefCriticalSection);
TRACE0("CSCGDIPlus constructed\n");
}
CSCGDIPlus::~CSCGDIPlus()
{
// Shutdown must have been called
ASSERT(!m_bInitialized);
::DeleteCriticalSection(&m_lRefCriticalSection);
TRACE0("CSCGDIPlus destructed\n");
}
BOOL CSCGDIPlus::SCInitInstance()
{
::EnterCriticalSection( &m_lRefCriticalSection );
// Should be called once per application
ASSERT(!m_bInitialized || (m_dwRefCount>0));
if (0==m_dwRefCount)
{
Status status = GdiplusStartup(&m_pGdiplusToken, &m_GdiplusStartupInput, NULL);
m_bInitialized = (Ok==status);
TRACE1("CSCGDIPlus::...GdiplusStartup, status=%d\n", m_bInitialized);
}
if (m_bInitialized)
m_dwRefCount++;
::LeaveCriticalSection( &m_lRefCriticalSection );
return m_bInitialized;
}
BOOL CSCGDIPlus::SCExitInstance()
{
::EnterCriticalSection( &m_lRefCriticalSection );
ASSERT(m_bInitialized);
if (m_bInitialized)
{
if (--m_dwRefCount == 0)
{
GdiplusShutdown(m_pGdiplusToken);
m_bInitialized = FALSE;
m_pGdiplusToken = NULL;
TRACE0("CSCGDIPlus::...GdiplusShutdown\n");
}
}
::LeaveCriticalSection( &m_lRefCriticalSection );
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -