bool CAcceleratorManager::AddCommandAccel(WORD wIDCommand, LPCTSTR szCommand, bool bLocked) { ASSERT(szCommand != NULL); ASSERT(m_pWndConnected != NULL); HACCEL hOriginalTable = theApp.hAccel; int nAccel = ::CopyAcceleratorTable(hOriginalTable, NULL, 0); LPACCEL lpAccel = (LPACCEL)LocalAlloc(LPTR, (nAccel) * sizeof(ACCEL)); if (!lpAccel) return false; ::CopyAcceleratorTable(hOriginalTable, lpAccel, nAccel); bool bRet = false; for (int i = 0; i < nAccel; i++) { if (lpAccel[i].cmd == wIDCommand) bRet = AddAccel(lpAccel[i].fVirt, wIDCommand, lpAccel[i].key, szCommand, bLocked); } ::LocalFree(lpAccel); return bRet; }
bool CAcceleratorManager::SetAccel(BYTE cVirt, WORD wIDCommand, WORD wKey, LPCTSTR szCommand, bool bLocked) { ASSERT(szCommand != NULL); return AddAccel(cVirt, wIDCommand, wKey, szCommand, bLocked); }