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

📄 traywnd.cpp

📁 放大镜
💻 CPP
字号:
// TrayWnd.cpp : implementation file
//

#include "stdafx.h"
#include <afxpriv.h>
#include "resource.h"
#include "KeyHook.h"
#include "MainSheet.h"
#include "TrayWnd.h"

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

IMPLEMENT_DYNAMIC(CTrayWnd, CFrameWnd)
BEGIN_MESSAGE_MAP(CTrayWnd, CFrameWnd)
	ON_MESSAGE(WM_MY_TRAY_NOTIFICATION, OnTrayNotification)
	//{{AFX_MSG_MAP(CTrayWnd)
	ON_COMMAND(ID_TRAY_EXITZOOMIN, OnTrayExit)
	ON_COMMAND(ID_TRAY_CHANGESETTINGS, OnTrayChangeSettings)
	ON_WM_CREATE()
	ON_COMMAND(ID_TRAY_ACTIVATE, OnTrayActivate)
	ON_UPDATE_COMMAND_UI(ID_TRAY_ACTIVATE, OnUpdateTrayActivate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

CTrayWnd::CTrayWnd()
{
	m_pSheet = new CMainSheet(this);
}

CTrayWnd::~CTrayWnd()
{
	delete m_pSheet;
}

int CTrayWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	HICON myIcon = AfxGetApp()->LoadIcon(IDI_ZOOMIN_ENABLED);
	SetIcon(myIcon, TRUE);
	KHAttachHookDLL(GetSafeHwnd());
	KHEnableZoomWindow(IsValidHotKey());

	// Initialize Tray Data

	memset(&m_trayData, 0 , sizeof(NOTIFYICONDATA));
	m_trayData.cbSize = sizeof(NOTIFYICONDATA);
	m_trayData.hWnd = GetSafeHwnd();
	m_trayData.uID = IDR_MENU;
	m_trayData.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
	m_trayData.uCallbackMessage = WM_MY_TRAY_NOTIFICATION;
	m_trayData.hIcon = AfxGetApp()->LoadIcon(
		IsValidHotKey() ? IDI_ZOOMIN_ENABLED : IDI_ZOOMIN_DISABLED);
	AfxLoadString(AFX_IDS_APP_TITLE, m_trayData.szTip,
		sizeof(m_trayData.szTip));
	VERIFY( Shell_NotifyIcon(NIM_ADD, &m_trayData) );
	return 0;
}

BOOL CTrayWnd::IsValidHotKey()
{
	return AfxGetApp()->GetProfileInt("", "wKey", 192) != 0;
}

LRESULT CTrayWnd::OnTrayNotification(WPARAM uID, LPARAM lEvent)
{
	if (uID != IDR_MENU || (lEvent != WM_RBUTTONUP
		&& lEvent != WM_LBUTTONDBLCLK))
	{
		return 0;
	}

	CMenu* pSubMenu;
	if (!(pSubMenu = GetMenu()->GetSubMenu(0)))
		return 0;

	if (lEvent != WM_RBUTTONUP)
		SendMessage(WM_COMMAND, pSubMenu->GetMenuItemID(0), 0);
	else
	{
		SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);

		CString strMenuText;
		strMenuText.LoadString(KHIsWindowVisible() ?
			IDS_HIDEWINDOW : IDS_SHOWWINDOW);
		pSubMenu->ModifyMenu(ID_TRAY_ACTIVATE, MF_BYCOMMAND,
			ID_TRAY_ACTIVATE, strMenuText);

		CPoint mouse;
		GetCursorPos(&mouse);
		SetForegroundWindow();	
		TrackPopupMenu(pSubMenu->m_hMenu, 0, mouse.x, mouse.y,
			0, GetSafeHwnd(), NULL);

	}

	return TRUE;
}

void CTrayWnd::OnTrayExit() 
{
	if (m_pSheet->GetSafeHwnd())
	{
		m_pSheet->EndDialog(IDCANCEL);
		PostMessage(WM_COMMAND, ID_TRAY_EXITZOOMIN);
		return;
	}

	Shell_NotifyIcon(NIM_DELETE, &m_trayData);
	KHAttachHookDLL(NULL);
	DestroyWindow();
}

void CTrayWnd::OnTrayChangeSettings() 
{
	if (KHIsWindowVisible())
		OnTrayActivate();

	if (m_pSheet->GetSafeHwnd())
	{
		SetForegroundWindow();	
		m_pSheet->SetFocus();
		return;
	}

	KHEnableZoomWindow(FALSE);
	m_trayData.hIcon = AfxGetApp()->LoadIcon(IDI_ZOOMIN_DISABLED);
	VERIFY( Shell_NotifyIcon(NIM_MODIFY, &m_trayData) );

	m_pSheet->DoModal();

	BOOL bEnable = IsValidHotKey();
	UINT resID = bEnable ? IDI_ZOOMIN_ENABLED : IDI_ZOOMIN_DISABLED;
	m_trayData.hIcon = AfxGetApp()->LoadIcon(resID);
	VERIFY( Shell_NotifyIcon(NIM_MODIFY, &m_trayData) );
	KHEnableZoomWindow(bEnable);
}

void CTrayWnd::OnTrayActivate() 
{
	KHShowZoomWindow(!KHIsWindowVisible());
	SetActiveWindow();
	SetFocus();
}

void CTrayWnd::OnUpdateTrayActivate(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(!m_pSheet->GetSafeHwnd());	
}

⌨️ 快捷键说明

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