Solved

Call DEFINE_RESPONSE_TABLEx 4 templates

Posted on 1997-12-24
3
366 Views
Last Modified: 2013-12-26
How 2 call DEFINE_RESPONSE_TABLEx 4 templates ?

I want 2 build a template 4  Dialog witch can be called
as normal 'TDialog' or as 'TOleDialog' so this can be done :

*******************************************
TMyDialog::TMyDialog(TWindow * AParent)
         : TDlgBase<TDialog>

==> TMyDialog acts like 'TDialog'

TMyDialog::TMyDialog(TWindow * AParent)
         : TDlgBase<TOleDialog>

==> TMyDialog acts like 'TOleDialog'
*******************************************

I have done all the code but now I don´t know how to
call the DEFINE_RESPONSE_TABLEx, DECLARE_RESPONSE_TABLE Makros ?


*******************************************
Examlpe Header :

template <class TDlg> class TDlgBase
                 : public TDlg
{
public:

         THelpDlgBase(TWindow *AParent);

protected:

         void                 EvNCPaint();

DECLARE_RESPONSE_TABLE( TDlgBase ); /*????*/
};
********************************************

********************************************
Examlpe Cpp :

template <class TDlg>
TDlgBase<TDlg>::TDlgBase(TWindow * AParent)
              : TDlg(AParent)
{
}

template <class TDlg> inline void
THelpDlgBase<TDlg>::EvNCPaint()
{
  TDlg::EvNCPaint();
 
}

DEFINE_RESPONSE_TABLE1( THelpDlgBase , TDlg )  /*?????*/
   EV_WM_NCPAINT,
END_RESPONSE_TABLE;

********************************************
0
Comment
Question by:Dirk_Sander
3 Comments
 
LVL 3

Accepted Solution

by:
JPM earned 20 total points
ID: 1299503
This works for me!

template <class T> class TmyTemplateDlg : public TDialog
{.....................}

class TmyDialog : public TmyTemplateDlg< myDataClass >
{
......................
DECLARE_RESPONSE_TABLE( TmyDialog )

}
................
DEFINE_RESPONSE_TABLE1( TmyDialog , TDialog )
........

myDataClass is a class I have defined to storing data associated to TmyDialog box


( NB :  When it's only a comment , the current balance doesn't change , does it???
  So don't care about !
  Many guys can answer for free..... and I guess I can ! )        .... kidding.....

0
 
LVL 3

Expert Comment

by:LucHoltkamp
ID: 1299504
I don't think that answers Dirk_Sanders' question, he wants a template which takes a TWindow derived as parameter and this gives a lot of trouble with owl's DEFINE_RESPONSE_TABLE macro.
However, I think I have a (reusable) answer, requiring a few lines (8) of "code". Hint: take a look at owl/eventhan.h
.luc.
0
 

Author Comment

by:Dirk_Sander
ID: 1299505
What luc said is right !

I want to use TDialog or TOleDialog as base class
but in TMyDialog there has to be the DEFINE_RESPONSE_TABLE macro !

But here is the solution :

In Header file all as usual :

************************************
DECLARE_RESPONSE_TABLE( TMyDialog );
************************************

In Cpp file a little workarround 4 the makro :

*************************************************************
template <class TDlgBase> inline bool
TMyDialog<TDlgBase>::Find(TEventInfo& eventInfo, TEqualOperator equal)
{
  eventInfo.Object = (GENERIC*)this;

  return SearchEntries((TGenericTableEntry __RTFAR*)__entries,  eventInfo, equal) ||
         TDlgBase::Find(eventInfo, equal);
}

template <class TDlgBase> inline TResponseTableEntry<TMyDialog<TDlgBase> >
 __RTFAR  TMyDialog<TDlgBase>::__entries[] =
{
   EV_WM_NCPAINT,
   EV_WM_ACTIVATE,
   EV_WM_INITMENU,
   EV_WM_PAINT,
   EV_WM_SYSCOMMAND,
END_RESPONSE_TABLE;

***************************************************************
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

There are two main kinds of selectors in CSS: One is base selector like h1, h2, body, table or any existing HTML tags.  For instance, the following rule sets all paragraphs (<p> elements) to red: (CODE) CSS also allows us to define our own custom …
I found this questions asking how to do this in many different forums, so I will describe here how to implement a solution using PHP and AJAX. The logical flow for the problem should be: Write an event handler for the first drop down box to get …
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

808 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