How do I add controls (CButton) to a CPropertySheet?

I have a CProperySheet derived object to which I need to add four buttons.  I do not know how to do this, but I am trying to do the following in OnCreate:

int COptionSheet::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
#define BUTTON_WIDTH      50
#define BUTTON_HEIGHT      22
#define BUTTON_SPACE      10

if (CPropertySheet::OnCreate(lpCreateStruct) == -1)
   return -1;

// TODO: Add your specialized creation code here
LPRECT lpRect;
// Get window size
GetWindowRect( lpRect );
// expand it by 150 to the right so I can add some boxes
// for statistics later
lpRect->right += 150;
// Resize the window
MoveWindow( lpRect );

// pAddButton is of type CButton * and is a public data member of COptionSheet
pAddButton = new CButton();
LPCTSTR lpszAddCaption = "Add";
CRect pAddRect;
// define a button size
pAddRect.left = 20;
pAddRect.right = pAddRect.left + BUTTON_WIDTH;
pAddRect.top = 360;
pAddRect.bottom = pAddRect.top + BUTTON_HEIGHT;                                                             
// create button
  BOOL bReturn = pAddButton->Create(lpszAddCaption,                                 WS_VISIBLE|BS_PUSHBUTTON,                                                       pAddRect, this, IDC_ADD_RADOBJECT);                        
}
Problems:
First I get an 0xC0000005 Access viloation when I call GetWindowRect( lpRect ); at the top of this function.

Second, how do I set the font of the text on my buttons to be the same as the default Ok/Cancel/Apply buttons on the CPropertySheet and what is the default text.

Is the method for adding other controls (static text, list box etc) the same as for adding a button?

Ed                                    
epeddycoAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

chedrickCommented:
Here's the Access Violation problem...
LPRECT lpRect;    // This is the same as RECT *lpRect; Just a pointer, NO STORAGE. Probably pointer to NULL
// Get window size
GetWindowRect( lpRect );  //Tries to access NULL Pointer

Change this to
RECT aRect;
LPRECT lpRect=&aRect;
// Get window size
GetWindowRect( lpRect );
as an easy fix.

Second (sigh) Question:
Get the font used by the dialog (Get the CDC using GetDC(), then GetCurrentFont(...) ),  turn
off the font's bold attribute as follows:
Get a filled in LOGFONT structure via GetLogFont(...),
optionally adjust LOGFONT's lfWeight to 400, create a new CFont object initialize it using CreateFontIndirect with the LOGFONT structure
Select the font into the button's CDC by using SelectObject(...)
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
System Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.