Solved

resources in extension dll's

Posted on 2000-04-12
12
140 Views
Last Modified: 2013-11-20
Here is my problem.  I have an extension DLL that has some dialog boxes inside of it.  I want to use those dialog boxes inside of an exe program how would I do that?  Is there a way that the exe can use the DLL's dialogs just like it was its own?
0
Comment
Question by:simongod
  • 7
  • 5
12 Comments
 
LVL 5

Expert Comment

by:vachooho
Comment Utility
-copy your dialog's h file into the exe's project
- add AFX_EXT_CLASS after class declaration
class AFX_EXT_CLASS CMyDialog: public CDialog...
{
}
- instantiate as usual
CMyDialog dlg(OWNERWINDOW_HERE)
dlg.DoModal();
- before constructing CMyDialog above
use AfxSetResourceHandle(YOUR_DLL_HANDLE_HERE) ;
after calling DoModal() of dialog use AfxSetResourceHandle(BACK_TO_PREVIOUS_HANDLE);

- do not forget to link exe with Dialog DLL's Obj module.

Hope this helps

 
0
 
LVL 5

Expert Comment

by:vachooho
Comment Utility
ups

forget to say
that your Dialogs DLL should define dialogs as following

class __declspec(dllexport) CMyDialog : public ...
{
}

I use the following #defines for exported classes

#ifdef __DIALOG_IMPLEMENTATION_
#define _DIALOG_EXT_CLASS_ __declspec(dllexport)
#else
#define _DIALOG_EXT_CLASS __declspec(dllimport)
#endif

class _DIALOG_EXT_CLASS_ CmyDialog:public CDIalog
{
}

I define __DIALOG_IMPLEMENTATION_ in stdafx.h of the dll module and use the same dialog class header for both projects (dll and exe).

0
 
LVL 2

Author Comment

by:simongod
Comment Utility
i kind of understand what you are saying.  Let me show you the example that I am using and maybe you can help me to understand it.  Below is the link to that page at Code Guru.

http://codeguru.developer.com/dll/dialog_in_extdll.shtml
0
 
LVL 2

Author Comment

by:simongod
Comment Utility
what is OWNERWINDOW_HERE ?
0
 
LVL 5

Expert Comment

by:vachooho
Comment Utility
CDialog's constructor need the owner window pointer - OWNERWINDOW_HERE is the CWnd * to dialog's owner or NULL if dialog does not have owner window.


I looked over the URL you posted,
it is implemented exactly the way I told you about.

The main trick is to set resource handle so your exe will be able to find dialog resource in DLL.

What kind of help you need?
Article explains everything very clear.
just create two files  EXTDLLState.h and .cpp
#include them and change a call to DoModal();
that's it

If you have questions - post them together with source files (at least dll main module, dialog class, and exe's snippet with call to DLL's dialog)

0
 
LVL 2

Author Comment

by:simongod
Comment Utility
another problem when I click on the close button (little x in the top right corner of the dialog box) the dialog box doesn't close.  How can I get rid of the dialog box?  The way that I am using it if I enter info in some edit controls in the dialog can the exe use that info?  How would that be done.
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 5

Expert Comment

by:vachooho
Comment Utility
I need sources to answer that question

To pass entered text into main exe you can use member variables and DDX routines.

save entered  text into member variables in Dilaog

then in exe

Dialog dlg;
dlg.DoModal();
CString strEnteredText = dlg.m_strText1;


in dialog you need DDX_xxxx() Data exchange routines. Clas Wizard can do most work for you.
0
 
LVL 2

Author Comment

by:simongod
Comment Utility
you need to see my source to figure out why I cannot close the DLL's dialog box?
0
 
LVL 2

Author Comment

by:simongod
Comment Utility
let me have your email and I will send it to you.
0
 
LVL 5

Accepted Solution

by:
vachooho earned 200 total points
Comment Utility
vachikh@hpl.com
0
 
LVL 2

Author Comment

by:simongod
Comment Utility
the file is about 1.5 meg I hope that you can handle that.
0
 
LVL 2

Author Comment

by:simongod
Comment Utility
Thanks for the help everything works and i have improved upon the concepts to fir my needs
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Strange date stored 22 99
sum28 challenge 31 95
withoutTen challenge 14 87
Problem to event 3 47
Introduction: Finishing the grid – keyboard support for arrow keys to manoeuvre, entering the numbers.  The PreTranslateMessage function is to be used to intercept and respond to keyboard events. Continuing from the fourth article about sudoku. …
Introduction: Database storage, where is the exe actually on the disc? Playing a game selected randomly (how to generate random numbers).  Error trapping with try..catch to help the code run even if something goes wrong. Continuing from the seve…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

6 Experts available now in Live!

Get 1:1 Help Now