La réponse de Goz fonctionne très bien. Pour enregistrer tous les autres utilisateurs, voici un exemple de code qui suit sa suggestion:
// 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;
J'ai utilisé cette méthode et cela a bien fonctionné. Juste une courte note sur la façon d'obtenir le bon HACCEL dans une classe MFC CFrameWnd (dérivée): this-> m_hAccelTable ; Pour obtenir une utilisation HACCEL arbitraire: LoadAccelerators (AfxGetInstanceHandle(), MAKEINTRESOURCE (YOUR_RESOURCE_ID)); –