Solved

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

Posted on 1997-01-15
1
484 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

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

Introduction: Dialogs (1) modal - maintaining the database. Continuing from the ninth article about sudoku.   You might have heard of modal and modeless dialogs.  Here with this Sudoku application will we use one of each type: a modal dialog …
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
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.
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

948 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

22 Experts available now in Live!

Get 1:1 Help Now