Improve company productivity with a Business Account.Sign Up

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 695
  • Last Modified:

CDHTMLDialog in a dll fails after DoDataExchange

I have an mfc application that makes use of multiple dlls for various functions.  I have no problems if all I want to do is display a CDialog from one of these dlls but any attempt to display a CDHTMLDialog dialog results in a fail, it seems that the error happens within the DoDataExchange block.

I have calls to AFX_MANAGE_STATE and tried AfxEnableControlContainer but no go.  The error also happens if I try to host an activex control on a CDialog window.

Any ideas where I may be going wrong?

3 Solutions
AndyAinscowFreelance programmer / ConsultantCommented:
Put a breakpoint at the start of the DoDataExchange and see which line it fails at by single stepping.
try first by explicitly setting parent of your dialog.. you may use SetParent() for this



horridAuthor Commented:
AFX_MANAGE_STATE(AfxGetStaticModuleState()); << required to use any mfc component
// this code works to create and show a CDialog
      m_HelpUI = new CHelpUI; << standard CDialog
      m_HelpUI->Create( HOLDER,NULL );
// this code fails to create and show a CDHTMLDialog

      m_help = new HelpUIHTML;  <<CDHTMLDialog
      m_help->Create( HOLDER, NULL); << fails trying this
        m_help->ShowWindow(SW_SHOW );

The code fails calling this
      { return afxCurrentWinApp; }
It seems the call to AfxGetApp fails when called from CDHTMLDialog DoDataExchange.  I can call it without issue from my dlls main body.

When single stepping through DoDataExchange I places my breakpoint at the exit of the function
void HelpUIHTML::DoDataExchange(CDataExchange* pDX)
}<< breakpoint here.
It makes it to the breakpoint and stepping through gets me to the above error point.
Thanks for the help so far.  As it is I can work around the issue and just use a cdialog and onpaint but I would love to understand whats going on. I am self taught in c++ because I needed it for work, there are so many things I just don't understand yet.
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

I have not tried CDHTMLDialog but it seems that you need dialog template and DHTML resource. Also to catch events fired by HTML elements  you must add an entry to the dialog's DHTML event map like :


Have a look at following samples at codeproject about CDHTMLDialog:
This sample demonstrates using the new MFC7 CDHtmlDialog class. A dialog with a simple HTML page is created and displayed, and events from objects within that page are handled, and the HTML within the page modified dynamically to respond to these events. <=============================== 'The MFC CDHtmlDialog class'

Also have look :

Hope this helps
Hey man,
try add following code in your ::OnInitDialog

horridAuthor Commented:
Thanks all.  I ended up working out another solution to my problem but I expect the :OleInitialize was missing.  With XAML on its way and MS pulling support for  Win98 and 2k I don't think I will ever have issues like this again.  XAML and WPF make life so much better.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now