?
Solved

Call DEFINE_RESPONSE_TABLEx 4 templates

Posted on 1997-12-24
3
Medium Priority
?
372 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
[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
3 Comments
 
LVL 3

Accepted Solution

by:
JPM earned 40 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

Get real performance insights from real users

Key features:
- Total Pages Views and Load times
- Top Pages Viewed and Load Times
- Real Time Site Page Build Performance
- Users’ Browser and Platform Performance
- Geographic User Breakdown
- And more

Question has a verified solution.

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

Preface In the first article: A Better Website Login System (http://www.experts-exchange.com/A_2902.html) I introduced the EE Collaborative Login System and its intended purpose. In this article I will discuss some of the design consideratio…
I will show you how to create a ASP.NET Captcha control without using any HTTP HANDELRS or what so ever. you can easily plug it into your web pages. For Example a = 2 + 3 (where 2 and 3 are 2 random numbers) Session("Answer") = 5 then we…
The viewer will receive an overview of the basics of CSS showing inline styles. In the head tags set up your style tags: (CODE) Reference the nav tag and set your properties.: (CODE) Set the reference for the UL element and styles for it to ensu…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. 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.: (CODE)
Suggested Courses

762 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