In the DLL function that pops up the dialog you must manage the state so that the DLL code uses the DLL's resources.
extern __declspec(dllexport) void ShowEditDialog(int &MyData1, int &MyData2) { //ensure we are using our own resources AFX_MANAGE_STATE(AfxGetStaticModuleState()); CMyLocalDialog dlg; dlg.Arg1 = MyData1; //specific local data for MyLocalDialog dlg.Arg2 = MyData2; dlg.DoModal(); MyData1 = dlg.Arg1; //data after processing MyData2 = dlg.Arg2; }
Here's an update sent in by Johan Nilsson
I've provided a workaround for this, which I've been using myself. Not so pretty, but it works. Example on how to fix the ShowEditDialog fn :
extern __declspec(dllexport) void ShowEditDialog(int &MyData1, int &MyData2) { DWORD dwLastErr = NO_ERROR; // // surround the code in brackets, which will cause the temporary // object created by AFX_MANAGE_STATE to be destroyed before leaving // the exported function. // // NOTE : Do NOT call MFC code outside of these brackets. // { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CMyLocalDialog dlg; dlg.Arg1 = MyData1; //specific local data for MyLocalDialog dlg.Arg2 = MyData2; dlg.DoModal(); MyData1 = dlg.Arg1; //data after processing MyData2 = dlg.Arg2; // // save possible errors // dwLastErr = ::GetLastError(); } // // only set error if none is currently set. // (last error will always be NO_ERROR _unless_ // TlsGetValue failed earlier) // if (::GetLastError() == NO_ERROR) ::SetLastError(dwLastErr); }
Comments
-
user_f032, User, Male, Man, Icon, 256x256 | designdownloader.com
Posted by fatcowcom on 12/12/2012 12:04pmBy WebOsPublisher vectorjunky is an index of Free Vector Graphics available for download with a lot of free vector graphics ideal for your designs. Just download and enjoy. HAMMERHEAD SHARK ICONS FREE HAMMERHEAD SHARK ICONS FREE » Free Vector Graphics free download and share your vector Free Vector Download Home - Popular Vector - Submit Your Vector - Contact Us Vector category Abstract Animals Backgrounds Beauty Buildings Business Cartoons Celebrities Clip Art Education Event Fashion Finance Food and Drink Healthcare Holiday Icons Illustrations Industrial Interiors Landmarks Medical Nature Objects Other Outdoor Parks Patterns People People and live Recreation Religion Resource Science Shopping Signs Symbols Sport Stock Technology Templates Textures The Arts Transportation Tshirt Valentine Vehicles Vintage Weapons Wedding Wildlife world cup xmas Donate This site has required a great deal of money, time and effort to develop and maintain. If it's been useful to you then you can support this site by making a small donation. FACT: US $200/month for Server Hosting (and still running out of bandwith) + US $80/month for internet connection + hundred hours of working/month. Search for Vectors HAMMERHEAD SHARK ICONS FREE -- Loading... Sponsored links Our Network Free Logo Vector Image Stock Islamic Vector Free font Home - Popular Vector - Submit Your Vector - Privacy Policy - Contact Us All The vector mentioned are the property of their respective owners, and are either freeware, shareware, demo versions or public domain. The licence mentioned above the download button is just an indication. Please check the indicated author's website for details, and contact him/her if in doubt. If no author/licence is indicated that's because we don't have information, that doesn't mean it's free.
Reply -
aaagh, the dialog does not appear
Posted by matthew_b067 on 06/23/2005 04:18ami tried the above... i put a breakpoint in OnPaint to barely see the dialog, but normally i cannot see the dialog, the app loses its control, i have to kill the app by taskmanager. HeLp mAtHaI
Reply -
Well documented in MSDN
Posted by PadexArt on 01/13/2005 05:39pmIn the MSDN index go to "Regular DLL" topic and select "Regular DLLs Dynamically Linked to MFC" subtopic. Quote: { When building a regular DLL that dynamically links to MFC, you need to use the macroAFX_MANAGE_STATE to switch the MFC module state correctly. This is done by adding the following line of code to the beginning of functions exported from the DLL: AFX_MANAGE_STATE(AfxGetStaticModuleState( )) The AFX_MANAGE_STATE macro should not be used in regular DLLs that statically link to MFC or in extension DLLs. For more information, see Managing the State Data of MFC Modules. }
Reply -
Thank you!
Posted by Tandy on 07/24/2004 07:37amI really went nuts, when I tried to use and popup a DialogWindow in a dll. Normally I tried to do it simply as I do in an application by: CMyDialogWindowClass myDlg; myDlg.DoModal(); I went nearly crazy. All I had to include on top was: AFX_MANAGE_STATE(AfxGetStaticModuleState()); CMyDialogWindowClass myDlg; myDlg.DoModal(); That was all... Thank you for your help! CIAO Andreas
Reply -
If you get assert failures when calling DoModal, read this
Posted by jgrieger on 03/26/2004 07:07pmStumbled upon this which may or may not help: http://support.microsoft.com/default.aspx?scid=kb;EN-US;194300
Reply -
My regular MFC DLL with OCX control does not show!! Please HELP!!
Posted by Legacy on 01/07/2004 12:00amOriginally posted by: Sherri
IS it possible to use OCX object in MFC created regular DLL ? I checked the main executable program which has "AfxEnableControlContainer();" in InitInstance() .
Reply
The dialog box called from dll function still does not show. Please help!!! My both simple dll and exe programs are generated by MFC AppWizard. I can attach my simple program. Thanks for any help!!! -
How to import a Outlook.dll in a Visual C++ Project
Posted by Legacy on 06/26/2003 12:00amOriginally posted by: angelo xeno
If you have a idea ? but i'm not found a solution it's possible to call a dll with this name ? thank's for help
Reply -
Debug assertion failed at DoModal() in debug mode
Posted by Legacy on 06/12/2003 12:00amOriginally posted by: Uli
Hi!
I've tried to add dialogs to my program by this way but I always get "debug assertion failed"-errors when executing DoModal() in debug mode. Some months ago I had a similar problem which could be solved by changing the compiler settings. I've tried this also but it didn't work.
I've read the other comments and it seems to me I'm not alone with this problem. Has anyone a solution for this problem?
Greetings!
Uli
Reply -
HELP~~~~~~ SOS!!1
Posted by Legacy on 04/16/2003 12:00amOriginally posted by: Zidane22
I don't know how to invoke the dialog in dll yet! Could you send me the code, thanks!
Reply -
load a child dialog from dll?
Posted by Legacy on 02/12/2003 12:00amOriginally posted by: dawo
How can I load a child dialog from an dll and display it in an exe projekt as child????
does anyone have a sample project????
EMail: dawo.office@gmx.net
thanks!!!!!
http://www.codeguru.com/cpp/w-p/dll/article.php/c101/Dialogs-in-DLL.htm