La respuesta de Goz funciona muy bien. Para guardar el resto de las personas, aquí está el código de muestra que sigue a su sugerencia:
// Allocate the accelerator buffer
HACCEL hAccelOld = LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACC_TECONTROL));
int iNumAccelerators = CopyAcceleratorTable(hAccelOld, NULL, 0);
ACCEL *pAccels = new ACCEL[iNumAccelerators];
// Copy the current table to the buffer
VERIFY(CopyAcceleratorTable(hAccelOld, pAccels, iNumAccelerators) == iNumAccelerators);
// Modify the pAccels array as required
...
// Destroy the current table resource...
VERIFY(DestroyAcceleratorTable(hAccelOld) == TRUE);
// ... create a new one, based on our modified table
m_hTerAcceleratorTable = CreateAcceleratorTable(pAccels, iNumAccelerators);
ASSERT(m_hTerAcceleratorTable != NULL);
// Cleanup
delete[] pAccels;
Utilicé este método y funcionó bien. Solo una breve nota sobre cómo obtener el HACCEL correcto en una clase CFFCmemcast (Derivada) MFC: this-> m_hAccelTable ; Para obtener un uso arbitrario de HACCEL: LoadAccelerators (AfxGetInstanceHandle(), MAKEINTRESOURCE (YOUR_RESOURCE_ID)); –