⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bcgpselectskindlg.cpp

📁 远程网络监视程序的源码
💻 CPP
字号:
// BCGSelectSkinDlg.cpp : implementation file
//

#include "stdafx.h"

#if defined _AFXDLL && !defined _BCGCBPRO_STATIC_	// Skins manager can not be used in the static version

#include "BCGCBPro.h"
#include "BCGGlobals.h"
#include "bcgprores.h"
#include "BCGPSelectSkinDlg.h"
#include "BCGPSkinManager.h"

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

/////////////////////////////////////////////////////////////////////////////
// CBCGPSelectSkinDlg dialog

CBCGPSelectSkinDlg::CBCGPSelectSkinDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CBCGPSelectSkinDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CBCGPSelectSkinDlg)
	m_strAuthor = _T("");
	//}}AFX_DATA_INIT

	m_iSelectedSkin = -1;
	m_strClose.LoadString (IDS_BCGBARRES_CLOSE);
	m_srDefault.LoadString (IDS_BCGBARRES_DEFAULT_VIEW);
}


void CBCGPSelectSkinDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBCGPSelectSkinDlg)
	DDX_Control(pDX, IDC_BCGBARRES_MAIL, m_btnMail);
	DDX_Control(pDX, IDC_BCGBARRES_URL, m_btnURL);
	DDX_Control(pDX, IDC_BCGBARRES_DOWNLOAD_SKINS, m_btnDownload);
	DDX_Control(pDX, IDOK, m_btnOK);
	DDX_Control(pDX, IDCANCEL, m_btnCancel);
	DDX_Control(pDX, IDC_BCGBARRES_SKINS_LIST, m_wndSkinsList);
	DDX_Control(pDX, IDC_BCGBARRES_SKIN_PREVIEW, m_wndSkindPreviewArea);
	DDX_Text(pDX, IDC_BCGBARRES_AUTHOR, m_strAuthor);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBCGPSelectSkinDlg, CDialog)
	//{{AFX_MSG_MAP(CBCGPSelectSkinDlg)
	ON_LBN_DBLCLK(IDC_BCGBARRES_SKINS_LIST, OnDblclkBcgbarresSkinsList)
	ON_WM_PAINT()
	ON_LBN_SELCHANGE(IDC_BCGBARRES_SKINS_LIST, OnSelchangeBcgbarresSkinsList)
	ON_BN_CLICKED(IDC_BCGBARRES_APPLY, OnApply)
	ON_BN_CLICKED(IDC_BCGBARRES_DOWNLOAD_SKINS, OnDownloadSkins)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_BCGBARRES_MAIL, OnMail)
	ON_BN_CLICKED(IDC_BCGBARRES_URL, OnURL)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBCGPSelectSkinDlg message handlers

void CBCGPSelectSkinDlg::OnDblclkBcgbarresSkinsList() 
{
	OnOK();
}
//*************************************************************************************
void CBCGPSelectSkinDlg::OnOK() 
{
	g_pSkinManager->SetActiveSkin (m_iSelectedSkin);
	CDialog::OnOK();
}
//*************************************************************************************
BOOL CBCGPSelectSkinDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

	if (g_pSkinManager == NULL)
	{
		ASSERT(FALSE);
		EndDialog (IDCANCEL);

		return TRUE;
	}

	g_pSkinManager->LoadAllSkins ();

	if (!g_pSkinManager->IsDownloadAvailable ())
	{
		m_btnDownload.EnableWindow (FALSE);
		m_btnDownload.ShowWindow (SW_HIDE);
	}

	//--------------------
	// Setup user buttons:
	//--------------------
	m_btnMail.m_nFlatStyle = CBCGPButton::BUTTONSTYLE_FLAT;
	m_btnMail.SetImage (IDB_BCGBARRES_MAIL);
	m_btnMail.SetWindowText (_T(""));
	m_btnMail.SizeToContent ();
	
	m_btnURL.m_nFlatStyle = CBCGPButton::BUTTONSTYLE_FLAT;
	m_btnURL.SetImage (IDB_BCGBARRES_URL);
	m_btnURL.SetWindowText (_T(""));
	m_btnURL.SizeToContent ();

	//--------------------------
	// Define preview rectangle:
	//--------------------------
	m_wndSkindPreviewArea.GetWindowRect (&m_rectPreview);
	ScreenToClient (&m_rectPreview);

	RefreshSkinsList ();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
//*************************************************************************************
void CBCGPSelectSkinDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting

	if (m_iSelectedSkin != -1)
	{
		g_pSkinManager->PreviewSkin (&dc, m_iSelectedSkin, m_rectPreview);
	}

	dc.Draw3dRect (m_rectPreview, globalData.clrBtnShadow, globalData.clrBtnHilite);
}
//*************************************************************************************
void CBCGPSelectSkinDlg::OnSelchangeBcgbarresSkinsList() 
{
	ASSERT_VALID (g_pSkinManager);

	int iCurSel = m_wndSkinsList.GetCurSel ();
	m_iSelectedSkin = (int) m_wndSkinsList.GetItemData (iCurSel);

	LPCTSTR lpszAuthor = g_pSkinManager->GetSkinAuthor (m_iSelectedSkin);
	m_strAuthor = lpszAuthor == NULL ? _T("") : lpszAuthor;

	LPCTSTR lpszMail = g_pSkinManager->GetSkinAuthorMail (m_iSelectedSkin);
	m_btnMail.EnableWindow (lpszMail != NULL && lpszMail [0] != 0);
	m_btnMail.SetTooltip (lpszMail);

	LPCTSTR lpszURL = g_pSkinManager->GetSkinAuthorURL (m_iSelectedSkin);
	m_btnURL.EnableWindow (lpszURL != NULL && lpszURL [0] != 0);
	m_btnURL.SetTooltip (lpszURL);

	UpdateData (FALSE);

	InvalidateRect (m_rectPreview);
	UpdateWindow ();
}
//*************************************************************************************
void CBCGPSelectSkinDlg::OnApply() 
{
	g_pSkinManager->SetActiveSkin (m_iSelectedSkin);

	m_btnOK.EnableWindow (FALSE);
	m_btnOK.ShowWindow (SW_HIDE);

	m_btnCancel.SetWindowText (m_strClose);

	g_pSkinManager->LoadAllSkins ();
}
//**********************************************************************************
void CBCGPSelectSkinDlg::OnDownloadSkins() 
{
	ASSERT_VALID (g_pSkinManager);
	
	if (g_pSkinManager->DownloadSkins ())
	{
		g_pSkinManager->UnLoadAllSkins ();
		g_pSkinManager->ScanSkinsLocation ();
		g_pSkinManager->LoadAllSkins ();

		RefreshSkinsList ();
	}
}
//**********************************************************************************
void CBCGPSelectSkinDlg::RefreshSkinsList ()
{
	m_wndSkinsList.SetRedraw (FALSE);
	m_wndSkinsList.ResetContent ();

	int iIndex = m_wndSkinsList.AddString (m_srDefault);
	m_wndSkinsList.SetItemData (iIndex, (DWORD) -1);
	m_wndSkinsList.SetCurSel (iIndex);

	int cxExtent = 0;

	CClientDC dcList (&m_wndSkinsList);
	CFont* pOldFont = dcList.SelectObject (GetFont ());

	CRect rectList;
	m_wndSkinsList.GetClientRect (rectList);

	for (int i = 0; i < g_pSkinManager->GetSkinsCount (); i++)
	{
		LPCTSTR lpszName = g_pSkinManager->GetSkinName (i);
		if (lpszName == NULL)
		{
			ASSERT(FALSE);
			continue;
		}

		iIndex = m_wndSkinsList.AddString (lpszName);
		m_wndSkinsList.SetItemData (iIndex, (DWORD) i);

		if (i == g_pSkinManager->GetActiveSkin ())
		{
			m_iSelectedSkin = i;
			m_wndSkinsList.SetCurSel (iIndex);
		}

		int cxCurr = dcList.GetTextExtent (lpszName).cx;
		cxExtent = max (cxExtent, cxCurr);
	}

	m_wndSkinsList.SetHorizontalExtent (cxExtent + 10);
	dcList.SelectObject (pOldFont);

	OnSelchangeBcgbarresSkinsList ();
	m_wndSkinsList.SetRedraw ();
}
//***********************************************************************************
void CBCGPSelectSkinDlg::OnDestroy() 
{
	if (g_pSkinManager != NULL)
	{
		g_pSkinManager->UnLoadAllSkins ();
	}

	CDialog::OnDestroy();
}
//***********************************************************************************
void CBCGPSelectSkinDlg::OnMail() 
{
	ASSERT_VALID (g_pSkinManager);
	LPCTSTR lpszMail = g_pSkinManager->GetSkinAuthorMail (m_iSelectedSkin);

	if (lpszMail == NULL)
	{
		ASSERT (FALSE);
		return;
	}

	CString str;
	str.Format (_T("mailto:%s"), lpszMail);

	if (::ShellExecute (NULL, NULL, str, NULL, NULL, NULL) < (HINSTANCE) 32)
	{
		TRACE(_T("Can't open URL: %s\n"), str);
	}
}
//***********************************************************************************
void CBCGPSelectSkinDlg::OnURL() 
{
	ASSERT_VALID (g_pSkinManager);
	LPCTSTR lpszURL = g_pSkinManager->GetSkinAuthorURL (m_iSelectedSkin);

	if (lpszURL == NULL)
	{
		ASSERT (FALSE);
		return;
	}

	CString strURL = lpszURL;
	strURL.MakeLower ();

	const CString strPrefix = _T("http://");
	if (strURL.Find (strPrefix) != 0)
	{
		strURL = strPrefix + strURL;
	}

	if (::ShellExecute (NULL, NULL, strURL, NULL, NULL, NULL) < (HINSTANCE) 32)
	{
		TRACE(_T("Can't open URL: %s\n"), strURL);
	}
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -