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

📄 aboutdlg.cpp

📁 数字签名的例子
💻 CPP
📖 第 1 页 / 共 2 页
字号:



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 预处理
#include "Main.h"
#include "AboutDlg.h"
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 宏定义
#define IDC_CheckUpdate				1226										// 检查更新命令标识
#define VAL_AboutDlg_Width			400											// 对话框宽度
#define VAL_AboutDlg_Height			275											// 对话框高度
#define IDT_AboutDlg_Close			1534										// 关闭时钟标识
#define COLOR_AboutDlg_Link			0x00FF0000									// 超链接颜色
#define COLOR_AboutDlg_HotLink		0x000000FF									// 鼠标热点超链接颜色
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CAboutDlg 类静态变量
CAboutDlg::DIALOGINFO CAboutDlg::m_diDialog =
{
	{DS_CENTER | WS_POPUP | WS_BORDER | WS_VISIBLE, 0, 0, 0, 0,
		(VAL_AboutDlg_Width * 2 / 3), (VAL_AboutDlg_Height * 2 / 3)},			// 对话框模板
};

CAboutDlg::LINEINFO CAboutDlg::m_liLines[] =
{
	{{0, 1, 88, 74}, 0x00FF9966},												// 蓝线组
	{{60, 116, VAL_AboutDlg_Width, 132}, 0x00FF9966},							// 蓝线组
	{{60, 175, VAL_AboutDlg_Width, 176}, 0x00000000},							// 一根黑线
};

CAboutDlg::RECTINFO CAboutDlg::m_riRects[] =
{
	{{0, 75, VAL_AboutDlg_Width, 111}, 0x00FF9966},								// 蓝色矩形
	{{0, 111, VAL_AboutDlg_Width, 115}, 0x00CC3333},							// 深蓝色矩形
	{{60, 47, 116, 103}, 0x00CC3333},											// 图标外框深蓝色矩形
	{{64, 51, 112, 99}, 0x00FFFFFF},											// 图标外框白色矩形
	{{68, 55, 86, 73}, RGB(0xEE, 0xEE, 0xEE + VER_Major % 16)},					// 图标背景淡灰色矩形
	{{90, 55, 108, 73}, RGB(0xEE, 0xEE, 0xEE + VER_Minor % 16)},				// 图标背景淡灰色矩形
	{{68, 79, 86, 95}, RGB(0xEE, 0xEE, 0xEE + VER_Release % 16)},				// 图标背景淡灰色矩形
	{{90, 79, 108, 95}, RGB(0xEE, 0xEE, 0xEE + VER_Build % 16)},				// 图标背景淡灰色矩形
};

CAboutDlg::TEXTINFO CAboutDlg::m_tiTexts[] =
{
	{60, 162, TEXT(""), 0x00000000},											// 状态信息
	{60, 140, TEXT(""), 0x00BBBBBB},											// 版本信息
	{230, 140, TEXT(""), 0x00BBBBBB},											// 编译信息
	{60, 240, TEXT(""), 0x00000000},											// 描述信息
	{60, 255, TEXT(""), 0x00000000},											// 版权信息

#ifdef _BETA
	{270, 40, TEXT("BETA"), 0x00AAAAAA},										// 测试版本
#endif
};

CAboutDlg::FONTTEXTINFO CAboutDlg::m_ftiTexts[] =
{

	{125, 32, STR_Company, 0x00FFAAAA, {14, 0, 0, 0, 400, 1,
	0, 0, 0, 0, 0, ANTIALIASED_QUALITY, 0, TEXT("Arial")}},						// 公司名称

	{125, 40, STR_AppName, 0x00000000, {36, 0, 0, 0, 800, 1,
		0, 0, 0, 0, 0, ANTIALIASED_QUALITY, 0, TEXT("Arial")}},					// 程序名称
};

CAboutDlg::LINKINFO CAboutDlg::m_liLinks[] =
{
	{{60, 185, 0, 185 + 13}, TEXT(""), TEXT(""), (PCTSTR) IDC_CheckUpdate},		// 检查更新
	{{60, 200, 0, 200 + 13}, TEXT(""), TEXT(""), STR_WebUrl},					// 访问网站
	{{60, 215, 0, 215 + 13}, TEXT(""), TEXT(""), STR_MailUrl},					// 写信给作者
};

HWND CAboutDlg::m_hWnd = NULL;
BOOL CAboutDlg::m_bSplash = FALSE;
INT CAboutDlg::m_iLinkIndex = -1;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 显示关于对话框
VOID CAboutDlg::Show(HWND hParent)
{
	if (m_hWnd == NULL)
	{
		DialogBoxIndirect(g_hInst, (LPDLGTEMPLATE) &m_diDialog, hParent, (DLGPROC) AboutDlgProc);
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 以闪屏方式显示关于对话框
VOID CAboutDlg::Splash(UINT uTimer, HWND hParent)
{
	if (uTimer && (m_hWnd == NULL))
	{
		// 创建无模式对话框
		CreateDialogIndirect(g_hInst, (LPDLGTEMPLATE) &m_diDialog, hParent, (DLGPROC) AboutDlgProc);

		// 如果指定了自动关闭
		if (uTimer != -1)
		{
			SetTimer(m_hWnd, IDT_AboutDlg_Close, uTimer * 1000, NULL);
		}

		// 设置当前窗口以闪屏方式显示的标记
		m_bSplash = TRUE;
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 关闭窗口关于对话框
VOID CAboutDlg::Close(UINT uTimer)
{
	// 如果是立即关闭
	if (uTimer)
	{
		SetTimer(m_hWnd, IDT_AboutDlg_Close, uTimer, NULL);
	}
	else
	{
		// 设置 BitLive 通知窗口
		//CBitLive::SetNotify(CMainWnd::m_hWnd);

		// 删除定时器
		KillTimer(m_hWnd, IDT_AboutDlg_Close);

		// 如果当前窗口以闪屏方式显示
		if (m_bSplash)
		{
			DestroyWindow(m_hWnd);
			m_bSplash = FALSE;
		}
		else
		{
			EndDialog(m_hWnd, 0);
		}

		m_hWnd = NULL;
		m_tiTexts[0].tzText[0] = 0;
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 设置状态信息
VOID CAboutDlg::SetStatusText(PCTSTR ptzText)
{
	HDC hMem;
	RECT rtRect;

	// 状态信息矩形
	rtRect.left = m_tiTexts[0].x;
	rtRect.top = m_tiTexts[0].y;
	rtRect.right = VAL_AboutDlg_Width;
	rtRect.bottom = rtRect.top + _RectHeight(m_liLinks[0].rtRect);

	// 获取状态信息
	if (ptzText)
	{
		lstrcpy(m_tiTexts[0].tzText, ptzText);
	}
	else
	{
		m_tiTexts[0].tzText[0] = 0;
	}

	// 绘制状态信息
	hMem = GetDC(m_hWnd);
	SetTextColor(hMem, m_tiTexts[0].crColor);
	FillRect(hMem, &rtRect, (HBRUSH) GetStockObject(WHITE_BRUSH));
	SelectObject(hMem, (HFONT) GetStockObject(DEFAULT_GUI_FONT));
	TextOut(hMem, m_tiTexts[0].x, m_tiTexts[0].y, m_tiTexts[0].tzText, lstrlen(m_tiTexts[0].tzText));
	ReleaseDC(m_hWnd, hMem);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 关于对话框回调函数
INT_PTR CALLBACK CAboutDlg::AboutDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	INT i;
	POINT ptPoint;

	switch (uMsg)
	{
	case WM_INITDIALOG:
		// 初始化变量
		m_hWnd = hWnd;
		m_iLinkIndex = NULL;

		// 设置鼠标指针
		SetClassLongPtr(m_hWnd, GCLP_HCURSOR, 0);
		SetCursor(LoadCursor(NULL, IDC_ARROW));

		// 设置对话框风格
		if (GetParent(m_hWnd) == NULL)
		{
			SetWindowLongPtr(m_hWnd, GWL_EXSTYLE, (GetWindowLongPtr(m_hWnd, GWL_EXSTYLE) | WS_EX_TOOLWINDOW));
		}
		SetWindowPos(m_hWnd, GetParent(m_hWnd) ? 0 : HWND_TOPMOST, 0, 0, VAL_AboutDlg_Width, VAL_AboutDlg_Height, SWP_NOMOVE);

		// 获取语言相关字符串
		wsprintf(m_tiTexts[1].tzText, STR_VersionStamp, STR_VersionStamp);
		wsprintf(m_tiTexts[2].tzText, STR_BuildStamp, STR_BuildStamp);
		lstrcpy(m_tiTexts[3].tzText, STR_AppDesc);
		lstrcpy(m_tiTexts[4].tzText, STR_Copyright);
		//lstrcpy(m_liLinks[0].tzTitle, LNG_CheckUpdate);
		lstrcpy(m_liLinks[1].tzTitle, STR_Web);
		lstrcpy(m_liLinks[2].tzTitle, STR_Mail);
		//lstrcpy(m_liLinks[0].tzTip, LNG_CheckUpdateTip);
		//lstrcpy(m_liLinks[1].tzTip, LNG_VisitWebTip);
		//lstrcpy(m_liLinks[2].tzTip, LNG_WriteEmailTip);
		break;

	case WM_ERASEBKGND:
		OnPaint((HDC) wParam);
		return TRUE;

	case WM_ACTIVATEAPP:
		// 激活程序
		GetCursorPos(&ptPoint);
		MapWindowPoints(NULL, m_hWnd, &ptPoint, 1);
		SendMessage(m_hWnd, WM_MOUSEMOVE, 0, MAKELONG(ptPoint.x, ptPoint.y));
		break;

	case WM_MOUSEMOVE:
		// 如果鼠标所在位置的超链接改变
		ptPoint.x = LOWORD(lParam);
		ptPoint.y = HIWORD(lParam);
		i = GetLinkIndex(ptPoint);
		if (i != m_iLinkIndex)
		{
			m_iLinkIndex = i;
			PaintLinks();
		}
		break;

	case WM_LBUTTONDOWN:
		// 如果在图标框内,拖动对话框
		ptPoint.x = LOWORD(lParam);
		ptPoint.y = HIWORD(lParam);

⌨️ 快捷键说明

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