Solved

Intercept OK button in TPropertySheet

Posted on 1997-10-06
10
319 Views
Last Modified: 2013-12-26
Hi World

Does any body know how to intercept OK Button in TPropertySheet ? I've tried CloseWindow and CanClose but witout a result.
Thanks for your help
0
Comment
Question by:dreynier
  • 6
  • 3
10 Comments
 

Expert Comment

by:djfr
ID: 1299421
Define a Response function in your Property Sheets' response table like so:

DEFINE_RESPONSE_TABLE1(MyPropertySheetClass, TPropertySheet)

EV_COMMAND_AND_ID(IDOK, HandleOkButton),

END_RESPONSE_TABLE;

The handler would look like:

void TMyPropertySheetClass::HandleOkButton(WPARAM wParam)
{
    switch(wParam)
    {
        case IDOK:
            // do something.....
            Apply();
           
            break;
    }
}

Property Sheets aren't easy.  I have a paper on them somewhere...

Hope this helps:-)

DJF



0
 

Author Comment

by:dreynier
ID: 1299422
Thanks for your answer

...Before asking for help, I've tried to define a Reponse function but whith a wrong parameter type ( my french documentation is ::HandleFunction(uint param) and not HandleFunction(WPARAM param) )
I've tried your example but I still can't intercept OK Button

I've set a Breakpoint on the response function but the application never stop at this point

Here is a part of my code

class TCenteredPropertySheet : public TPropertySheet
  {
  public:
    TCenteredPropertySheet(TWindow* parent, char* title, int startPage = 0, bool isWizard = false, uint32 flag = SH_DEFAULT );

  protected:
    void           SetupWindow();
    void           ButtonClicked(WPARAM param);      

  public:
    DECLARE_RESPONSE_TABLE(TCenteredPropertySheet);
  };

DEFINE_RESPONSE_TABLE1( TCenteredPropertySheet, TPropertySheet)
EV_COMMAND_AND_ID(IDOK, ButtonClicked),
END_RESPONSE_TABLE;


TCenteredPropertySheet::TCenteredPropertySheet( TWindow* parent, char* title, int startPage,                                              bool isWizard, uint32 flag ):
TPropertySheet( parent, title, startPage, isWizard, flag )
  {

  }


void TCenteredPropertySheet::SetupWindow()
  {
  TPropertySheet::SetupWindow();
  TRect rc;
  GetWindowRect( rc );
  TScreenDC dc;
  int nX = dc.GetDeviceCaps(HORZRES) / 2 - rc.Width() / 2;
  int nY = dc.GetDeviceCaps(VERTRES) / 2 - rc.Height() / 2;
  SetWindowPos( HWND_TOP, nX, nY, 0, 0, SWP_NOSIZE );
  }


void TCenteredPropertySheet::ButtonClicked(WPARAM param)
  {
  if( param == IDOK )
    CheckAllPage();
  }
            

I really don't understand why !!!
      

0
 

Expert Comment

by:djfr
ID: 1299423
Are you calling EnableSubclass(true); in the constructor of your Property Sheet?
0
 

Author Comment

by:dreynier
ID: 1299424
Hi

Thanks a lot for your help
That was the good answer I can now intercept Ok
You talk about a paper on Property Sheets in your previous answer and I'm really interrested to get that paper if it is posible..
Never mind your answer is Ok and I give you a good rate

Daniel

0
 

Author Comment

by:dreynier
ID: 1299425
Hi

Thanks a lot for your help
That was the good answer I can now intercept Ok
You talk about a paper on Property Sheets in your previous answer and I'm really interrested to get that paper if it is posible..

Never mind your answer is Ok and I give you a good rate

Daniel

0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Expert Comment

by:djfr
ID: 1299426
Thanks for your comment, I appreciate it.  Send me a mail at djfrazier@vendata.com, I'll see if I can dig up the paper somewhere.
0
 

Expert Comment

by:djfr
ID: 1299427
Please Grade!
0
 

Accepted Solution

by:
djfr earned 100 total points
ID: 1299428
I answered your question.  Please grade!

djfr
0
 
LVL 3

Expert Comment

by:LucHoltkamp
ID: 1299429
What the F... is EnableSubclass ??? I grepped my entire set of includefiles, but there is no EnableSubclass.
Furthermore, why don't you use EV_COMMAND instead of EV_COMMAND_AND_ID.
please djfr help me!!
.luc.  
0
 

Expert Comment

by:djfr
ID: 1299430
What version of the Borland compiler are you running with?  I am using 5.02.  If your version is pre 5.x, I don't believe you'll find it.  The reason I use EV_COMMAND_AND_ID is so that I can have one function that handles multiple WM_COMMAND messages.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Article by: Matthew
I am a very big proponent of technology compliance standards and strive to meet such criteria in all of my work. That includes my site, which is 100% XHTML 1.0 compliant as determined by the World Wide Web Consortium. https://www.matthewstevenkel…
Have you tried to learn about Unicode, UTF-8, and multibyte text encoding and all the articles are just too "academic" or too technical? This article aims to make the whole topic easy for just about anyone to understand.
The viewer will the learn the benefit of plain text editors and code an HTML5 based template for use in further tutorials.
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

867 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

13 Experts available now in Live!

Get 1:1 Help Now