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

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
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. MSs impl went way beyond that fix.
I have a sample solution that illustrates this very easily. Ive 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. Ive also added some support for WM_GETMESSAGE and IsDialogMessage, but since that only processes Z-Order and doesnt go into ControlContainers, its of no use.
Any help is appreciated.
Thanks,
Brian R.

View the full article
 
Back
Top