Chapter 17: Track-Based Controls Visual C++ and MFC Fundamentals
- To set the starting color of the preview picture, access the OnPain() event of the
CcolorPreviewDlg class and change it as follows:
void CColorPreviewDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect RectPreview;
CBrush BrushGray(PreviewColor);m_Preview.GetWindowRect(&RectPreview);
CBrush *pOldBrush = dc.SelectObject(&BrushGray);ScreenToClient(&RectPreview);
dc.Rectangle(RectPreview);dc.SelectObject(pOldBrush);if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND,
reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}- Test the application and return to MSVC
17.1.2..Creating a Spin Button.......................................................................
To create a spin button, at design time, you can click the Spin button on the Controls
toolbox and click the desired area on the intended host.A spin button control is based on the CSpinButtonCtrl class. Therefore, to
programmatically create a spin button, declare a pointer to CSpinButtonCtrl then call its
Create() method to initialize it. The syntax of the CSpinButtonCtrl::Create() method
is:BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );Because a spin button cannot be a parent, the minimum style you must apply is
WS_CHILD. If you want the control to be visible upon creating, add the WS_VISIBLE
style. Here is an example: