Solved

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

Posted on 1997-01-15
1
479 Views
Last Modified: 2013-11-20
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                                    
0
Comment
Question by:epeddyco
1 Comment
 
LVL 1

Accepted Solution

by:
chedrick earned 100 total points
ID: 1300419
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

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Introduction: Load and Save to file, Document-View interaction inside the SDI. Continuing from the second article about sudoku.   Open the project in visual studio. From the class view select CSudokuDoc and double click to open the header …
Introduction: Hints for the grid button.  Nested classes, templated collections.  Squash that darned bug! Continuing from the sixth article about sudoku.   Open the project in visual studio. First we will finish with the SUD_SETVALUE messa…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

743 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

9 Experts available now in Live!

Get 1:1 Help Now