Solved

Intercept OK button in TPropertySheet

Posted on 1997-10-06
10
324 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
Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

 

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
 

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

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

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

Suggested Solutions

This article covers the basics of the Sass, which is a CSS extension language. You will learn about variables, mixins, and nesting.
Browsers only know CSS so your awesome SASS code needs to be translated into normal CSS. Here I'll try to explain what you should aim for in order to take full advantage of SASS.
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…
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

776 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