Solved

resources in extension dll's

Posted on 2000-04-12
12
146 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 7
  • 5
12 Comments
 
LVL 5

Expert Comment

by:vachooho
ID: 2708769
-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
ID: 2708788
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
ID: 2708847
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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 2

Author Comment

by:simongod
ID: 2708861
what is OWNERWINDOW_HERE ?
0
 
LVL 5

Expert Comment

by:vachooho
ID: 2708915
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
ID: 2709007
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
 
LVL 5

Expert Comment

by:vachooho
ID: 2709021
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
ID: 2709070
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
ID: 2709073
let me have your email and I will send it to you.
0
 
LVL 5

Accepted Solution

by:
vachooho earned 200 total points
ID: 2709090
vachikh@hpl.com
0
 
LVL 2

Author Comment

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

Author Comment

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

Featured Post

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction: Dynamic window placements and drawing on a form, simple usage of windows registry as a storage place for information. Continuing from the first article about sudoku.  There we have designed the application and put a lot of user int…
Introduction: Hints for the grid button.  Nested classes, templated collections.  Squash that darned bug! Continuing from the sixth article about sudoku.   Open the project in visual studio. First we will finish with the SUD_SETVALUE messa…
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.
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…

729 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