注册热键及使用方法

作者:古典小说网

头条:讨厌编程  、 古典古韵古典小说

作品:快乐课堂软件、任性动图软件、古典小说大全




定义

	HACCEL m_hAccelerator;// 加速键结构体
	int HotKeyID1;			//热键事件ID,动态生成,如觉得没必要,可设置一固定整数。

	LONG OnHotKey(WPARAM wParam, LPARAM lParam);


初始化

	m_hAccelerator = NULL;
	HotKeyID1 = 0;
	
         {

		m_hAccelerator = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME_NEW));

		//寻找HotKey对应的原子是否存在于原子列表
		HotKeyID1 = GlobalFindAtom(L"RenxingdongtuHotKey1");			//自定义一个原子串,尽量唯一
		if (HotKeyID1 > 0)									//如果存在,
			GlobalDeleteAtom(HotKeyID1);					//则删除全局原子

		HotKeyID1 = GlobalAddAtom(L"RenxingdongtuHotKey1");
		//注册全局热键 ctrl + alt + U
		//RegisterHotKey(GetSafeHwnd(), HotKeyID1, MOD_CONTROL /*| MOD_ALT*/, L'U');
		RegisterHotKey(GetSafeHwnd(), HotKeyID1, MOD_CONTROL, L'R');

	}


设置响应函数

ON_MESSAGE(WM_HOTKEY, OnHotKey)		


LONG CImportView::OnHotKey(WPARAM wParam, LPARAM lParam)
{
	UINT fuModifiers = (UINT)LOWORD(lParam);  // 控制键,ctrl,alt等
	UINT uVirtKey = (UINT)HIWORD(lParam);     // 键盘码 A,B,C等

											  //判断响应了什么热键   
											  //ctrl + alt + U 显示主窗体
	//if ((MOD_CONTROL /*| MOD_ALT*/) == fuModifiers && L'U' == uVirtKey)


	if ((MOD_CONTROL /*| MOD_ALT*/) == fuModifiers && L'R' == uVirtKey)
	{



		//CWnd *pWnd = CWnd::FindWindow(NULL, L"RenxingDongtuLuPing");
		if (/*pWnd&&*/g_nWindowHwnd > 0)
		{
			CString sCopyData;
			COPYDATASTRUCT cpd = { 0 };

			/*cpd.lpData = sCopyData.GetBuffer();
			cpd.cbData = sCopyData.GetLength();*/
			cpd.dwData = 0;
			cpd.cbData = sCopyData.GetLength() * 2 + 1;//多加一个长度,防止乱码
			cpd.lpData = (void*)sCopyData.GetBuffer(cpd.cbData);

			HWND hDstWnd = (HWND)g_nWindowHwnd;
			::SendMessage(hDstWnd, WM_COPYDATA, (WPARAM)m_hWnd, (LPARAM)&cpd);




		}
		g_bStartLuping = FALSE;
		//	if (g_nLuping == 2)
		{

			//m_nKuangjiaMode = 1;
			SetKuangjiaMode();
			OnBgMiddle();
			RedrawWindow();
		}


		g_nLuping = 1;			//显示主窗体








	}
	//else if( MOD_ALT == fuModifiers && 'M' == uVirtKey )   //多热键处理
	//{   
	//    AfxMessageBox(_T("你按下了组合键 alt + m"));     
	//}   
	//else  
	//    AfxMessageBox(_T("你按下了未知热键"));

	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清水迎朝阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值