作者:古典小说网
头条:讨厌编程 、 古典古韵古典小说
作品:快乐课堂软件、任性动图软件、古典小说大全
定义
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;
}