Se seu Dialog for Modal, voce pode chamar a função EndDialog( );
Se ele for modeless, voce pode chamar DestroyWindow( hDlg );
Sendo modeless, voce tem que sobrecarregar CDialog:
nCancel(..), não precisa fazer nada, mas o default chama EndDialog, e voce pode chamar DestroyWindow(..) aqui, senão dará erro no seu caso de modeless. E sobrecarregar PostNcDestroy(..) para dar um delete this no objeto do dialog.
Tem mais detalhes no help da classe Dialog no MSDN.
http://msdn.microsoft.com/en-us/library/132s802t(VS.80).aspx
Dessa forma, uma vez que voce seja notificado do evento do ActiveX, voce pode encerrar o Dialog(..) sem que ninguém tenha pressionado nenhum controle que o feche.
Abraços,
cox