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

📄 resorgaboutbox.cpp

📁 ResOrg 图形化管理Vc项目的资源ID的工具的源代码。 ResOrg - Manage and Renumber Resource Symbol IDs Introduction The
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	sCaption.Format(sFmt, ::AfxGetAppName() );
	SetWindowText(sCaption);
	
	// Create the background brush
	m_Brush.CreateSolidBrush(COLOUR_ABOUTBOX_BACKGROUND);

	m_ctrlDisclaimer.SetBkColor(COLOUR_ABOUTBOX_BACKGROUND);
	m_ctrlExpiry.SetBkColor(COLOUR_ABOUTBOX_BACKGROUND);


	// Set the font for the app title and version
	// TO DO: get the font name and size from the string table
	CWnd* pWnd = GetDlgItem(IDC_RESORG_TITLE);
	if (NULL != pWnd)
	{
		HDC hDC = ::GetDC(NULL);
		int nFontSize = 14;
		LONG nHeight = 0 - ::GetDeviceCaps(hDC, LOGPIXELSY) * nFontSize / 72;
		::ReleaseDC(NULL, hDC);

		m_fontTitle.SetFaceName( _T("Verdana") );
		m_fontTitle.SetBold(TRUE);
		m_fontTitle.SetHeight(nHeight);

		pWnd->SetFont(&m_fontTitle);
	}
	pWnd = GetDlgItem(IDC_RESORG_VERSION);
	if (pWnd != NULL)
	{
		HDC hDC = ::GetDC(NULL);
		int nFontSize = 10;
		LONG nHeight = 0 - ::GetDeviceCaps(hDC, LOGPIXELSY) * nFontSize / 72;
		::ReleaseDC(NULL, hDC);

		m_fontVersion.SetFaceName( _T("Verdana") );
		m_fontVersion.SetBold(TRUE);
		m_fontVersion.SetItalic(TRUE);
		m_fontVersion.SetHeight(nHeight);

		pWnd->SetFont(&m_fontVersion);
	}
	// Read the fields we need from the version resource
	// If any can't be found, they will be blank
	CNGModuleVersion ver;
	ver.GetFileVersionInfo();

	m_sTitle		= ver.GetValue( _T("FileDescription") );
	m_sFileVersion	= _T("Version ") + ver.GetValue( _T("FileVersion") );
	m_sCopyright	= ver.GetValue( _T("LegalCopyright") );

	// Initialise the URL links
	if (!m_sWebsite.IsEmpty())
	{
		m_ctrlWebsite.SetURL(m_sWebsite);
	}
	if (!m_sMailTo.IsEmpty())
	{
		// Makeup URL including subject as app name/version
		CString sSubject = m_sTitle + _T(" ") + m_sFileVersion;

		CString sEmailURL =	_T("mailto:") +
							m_sMailTo +
							_T("?Subject=") +
							sSubject;

		m_ctrlEmail.SetURL(sEmailURL);
	}

	CString sDisclaimer;
	sDisclaimer.LoadString(IDS_RESORG_DISCLAIMER);

	m_ctrlDisclaimer.SetWindowText(sDisclaimer);

#ifdef _RESORG_EXPIRY_DATE

	CString sExpiryMsg;
	if (::IsVersionExpired() )
	{
		sExpiryMsg.LoadString(IDP_RESORG_EXPIRED);
	}
	else
	{
		CTime timeExpires = GetVersionExpiryDate();

		CString sExpiryTime = timeExpires.Format( _T("%A, %d %B, %Y") );

		sExpiryMsg.Format(IDP_RESORG_EXPIRY,
							sExpiryTime);

	}
	m_ctrlExpiry.SetWindowText(sExpiryMsg);
	m_ctrlExpiry.ShowWindow(SW_RESTORE);
#endif
	
	UpdateData(FALSE);

	// Initialise the dialog expander
	m_DlgExpander.Initialize(	this,
								FALSE,
								IDC_RESORG_ABOUTBOX_EXPAND,
								IDC_RESORG_ABOUTBOX_SHRINKMARK,
								_T("<<") ) ;


	// Store the positions of the OK and More/Less buttons
	m_ctrlOkButton.GetWindowRect(m_rectOkButton);
	ScreenToClient(m_rectOkButton);

	m_ctrlExpandButton.GetWindowRect(m_rectExpandButton);
	ScreenToClient(m_rectExpandButton);

	if (m_ThemeHelper.IsThemeActive() )
	{
		m_ctrlOkButton.SetThemeHelper(&m_ThemeHelper);
		m_ctrlExpandButton.SetThemeHelper(&m_ThemeHelper);
	}
	else
	{
		// Set button colours
		m_ctrlOkButton.SetColor(	CNGButton::BTNST_COLOR_FG_IN,
									COLOUR_ABOUTBOX_OK_BTN_FGND);

		m_ctrlOkButton.SetColor(	CNGButton::BTNST_COLOR_FG_OUT,
									COLOUR_ABOUTBOX_OK_BTN_FGND);

		m_ctrlOkButton.SetColor(	CNGButton::BTNST_COLOR_FG_FOCUS,
									COLOUR_ABOUTBOX_OK_BTN_FGND);

		m_ctrlOkButton.SetColor(	CNGButton::BTNST_COLOR_BK_IN,
									COLOUR_ABOUTBOX_OK_BTN_BKND);

		m_ctrlOkButton.SetColor(	CNGButton::BTNST_COLOR_BK_OUT,
									COLOUR_ABOUTBOX_OK_BTN_BKND);

		m_ctrlOkButton.SetColor(	CNGButton::BTNST_COLOR_BK_FOCUS,
									COLOUR_ABOUTBOX_OK_BTN_BKND);

		m_ctrlExpandButton.SetColor(CNGButton::BTNST_COLOR_FG_IN,
									COLOUR_ABOUTBOX_EXPAND_BTN_FGND);

		m_ctrlExpandButton.SetColor(CNGButton::BTNST_COLOR_FG_OUT,
									COLOUR_ABOUTBOX_EXPAND_BTN_FGND);

		m_ctrlExpandButton.SetColor(CNGButton::BTNST_COLOR_FG_FOCUS,
									COLOUR_ABOUTBOX_EXPAND_BTN_FGND);

		m_ctrlExpandButton.SetColor(CNGButton::BTNST_COLOR_BK_IN,
									COLOUR_ABOUTBOX_EXPAND_BTN_BKND);

		m_ctrlExpandButton.SetColor(CNGButton::BTNST_COLOR_BK_OUT,
									COLOUR_ABOUTBOX_EXPAND_BTN_BKND);

		m_ctrlExpandButton.SetColor(CNGButton::BTNST_COLOR_BK_FOCUS,
									COLOUR_ABOUTBOX_EXPAND_BTN_BKND);

		m_ctrlOkButton.SetFlat(FALSE);
		m_ctrlExpandButton.SetFlat(FALSE);
	}
	return TRUE;		// Return TRUE  unless you set the focus to a control
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgAboutBox message handlers

HBRUSH CResOrgAboutBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	// Call the base class first so the hyperlink controls will
	// be painted properly
	CResOrgAboutBox_BASE::OnCtlColor(pDC, pWnd, nCtlColor);

	HBRUSH hbr = m_Brush;

	UINT uID = pWnd->GetDlgCtrlID();
	if (uID > 0)
	{
		// Set the background mode for text to transparent 
		// so the background will show through
		pDC->SetBkMode(TRANSPARENT);

		switch (uID)
		{
			case IDC_RESORG_TITLE:
			case IDC_RESORG_PLATFORM:
			case IDC_RESORG_VERSION:
				pDC->SetTextColor(COLOUR_ABOUTBOX_TITLE);
				break;

			default:
				break;
		}
	}
	return hbr;
}


void CResOrgAboutBox::OnPaint(void) 
{
	CPaintDC dc(this); // device context for painting
	
	// Select a hollow brush
	CBrush* pOldBrush = (CBrush*)dc.SelectStockObject(HOLLOW_BRUSH);

	// Create and select a thick, blue pen
	CPen pen;
	pen.CreatePen(PS_SOLID, 5, RGB(0, 0, 200));
	CPen* pOldPen = (CPen*)dc.SelectObject(&pen);

	// Get our client rectangle so we can to use it to
	// draw a bounding rectangle around the splash screen
	CRect rect;
	GetClientRect(rect);

	// Draw a hollow rectangle
	dc.Rectangle(rect);

	// Restore the original pen and brush
	dc.SelectObject(pOldBrush);
	dc.SelectObject(pOldPen);

	// Do not call CResOrgSplashWnd_BASE::OnPaint() for painting messages
}


void CResOrgAboutBox::OnClickedExpand(void) 
{
	m_DlgExpander.OnExpandButton();

	if (m_DlgExpander.IsExpanded())
	{
		// Move the OK and More/Less buttons
		CRect rect;
		CWnd* pWnd = GetDlgItem(IDC_RESORG_ABOUTBOX_IDOK_EXPANDED);
		pWnd->GetWindowRect(rect);
		ScreenToClient(rect);

		m_ctrlOkButton.MoveWindow(rect);

		pWnd = GetDlgItem(IDC_RESORG_ABOUTBOX_CONTRACT);
		pWnd->GetWindowRect(rect);
		ScreenToClient(rect);

		m_ctrlExpandButton.MoveWindow(rect);
	}
	else
	{
		m_ctrlOkButton.MoveWindow(m_rectOkButton);
		m_ctrlExpandButton.MoveWindow(m_rectExpandButton);
	}
}


void CResOrgAboutBox::OnMouseMove(UINT nFlags, CPoint point)
{
	if ( (!m_rectAuthorImage.IsRectEmpty() && m_rectAuthorImage.PtInRect(point) ) ||
		 (!m_rectCompanyLogo.IsRectEmpty() && m_rectCompanyLogo.PtInRect(point) ) )
	{
		// TODO: Add your message handler code here and/or call default
		if (m_hLinkCursor == NULL)                // No cursor handle - load our own
		{
			// Get the windows directory
			CString strWndDir;
			GetWindowsDirectory(strWndDir.GetBuffer(MAX_PATH), MAX_PATH);
			strWndDir.ReleaseBuffer();

			strWndDir += _T("\\winhlp32.exe");

			// This retrieves cursor #106 from winhlp32.exe, which is a hand pointer
			HMODULE hModule = LoadLibrary(strWndDir);
			if (hModule)
			{
				HCURSOR hHandCursor = ::LoadCursor(hModule, MAKEINTRESOURCE(106));
				if (NULL != hHandCursor)
				{
					m_hLinkCursor = CopyCursor(hHandCursor);
				}
			}
			FreeLibrary(hModule);
		}

		if (NULL != m_hLinkCursor)
		{
			::SetCursor(m_hLinkCursor);
		}
	}
	CResOrgAboutBox_BASE::OnMouseMove(nFlags, point);
}


void CResOrgAboutBox::OnLButtonDown(UINT nFlags, CPoint point)
{
	if (!m_rectAuthorImage.IsRectEmpty() && m_rectAuthorImage.PtInRect(point) )
	{
		::ShellExecute( NULL, _T("open"), Options.GetAboutMeURL(), NULL, NULL, SW_SHOW);
	}
	else if (!m_rectCompanyLogo.IsRectEmpty() && m_rectCompanyLogo.PtInRect(point) )
	{
		::ShellExecute( NULL, _T("open"), _T("http://www.riverblade.co.uk"), NULL, NULL, SW_SHOW);
	}
	CResOrgAboutBox_BASE::OnLButtonDown(nFlags, point);
}

⌨️ 快捷键说明

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