Implementing Tabs and Accelerators in .NET Modeless Dialogs in an MFC Application RRS feed

  • Question

  • We are integrating our application (a mixed COM and .NET application) into an existing MFC application.  Our components (DLLs) are loaded by the MFC application at runtime dynamically using inversion of control and they end up displaying .NET Modeless Dialogs.  Tabs and Accelerators do not work on these dialogs. 

    Prior to this integration, our application was a VB6 application that loads components using a configuration DB and the inversion of control pattern.  The loaded components could be VB6, C++, or .NET.  In the early days, we had this same tab and accelerator issue on our VB6 application, but Microsoft made a hotfix/roll up that addressed this issue for us:

    Now that we being loaded by an MFC Application, we are in the same boat again.  No tab and accelerator operations.

    1. What would the path be to request that Microsoft make the same System.Windows.Forms change for us that applies to MFC/C++ as well?
    2. In the meantime, is it possible to get a copy of the code that MS made in these previous patches?  The reason I ask is because implementing 'IsDialogMessage' in a WM_GETMESSAGE Hook is practically useless.  MS's impl went way beyond that fix.

    I have a sample solution that illustrates this very easily.  I've got a TLB/Interop Assembly and have implemented it in .NET.  I then created three application hosts to drive the same component - VB6, .NET, and MFC.  Tabbing works in all but the MFC application.  I've also added some support for WM_GETMESSAGE and IsDialogMessage, but since that only processes Z-Order and doesn't go into ControlContainers, it's of no use.

    Any help is appreciated.


    Brian R.

    • Edited by Brian R. _ Tuesday, April 2, 2013 4:31 PM
    • Moved by Mike FengModerator Thursday, April 4, 2013 3:10 AM
    • Moved by Elegentin Xie Friday, April 5, 2013 5:33 AM from Visual C++, to a more appropriate forum
    Tuesday, April 2, 2013 4:30 PM

All replies