Dialoge selber bekommen kein WM_KEYDOWN (seltsam, hab's aber grade selbst probiert, noch nicht mal, wenn man auf WM_GETDLGCODE antwortet).
Bei einem Dialog hat immer irgendein Child darauf den Focus, und dieses bekommt dann das WM_KEYDOWN. Sobald KEIN Child auf dem Dialog ist, bekommt dieser das WM_KEYDOWN tatsächlich.
Da du aber augenscheinlich MFC benutzt, kannst du PreTranslateMessage verwenden. Da bekommst du alle WM_KEYDOWNs, die der Dialog oder eines seiner Childs bekommt und kannst sie auch ausgeben.
Kommen nicht alle Tasten durch, dann versuche auf WM_GETDLGCODE ein DLGC_WANTALLKEYS zurückzugeben.
So, Ende der Fahnenstange.