15,980
社区成员




//在OnEraseBkgnd
//设置brush为希望的背景颜色
CBrush backBrush(RGB(120,120,120));
//保存旧的brush
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
CRect rect;
pDC->GetClipBox(&rect);
//画需要的区域
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
//OnPaint
CPaintDC dc(this); // device context for painting
CRect Rect;
GetClientRect(Rect);
CRect rectClient;
CDC dcMen, dcBkgnd;
CBitmap bitmapTemp, *pOldBitmap;
GetClientRect(&rectClient);
bitmapTemp.CreateCompatibleBitmap(&dc, rectClient.Width(), rectClient.Height());
dcMen.CreateCompatibleDC(&dc);
pOldBitmap = dcMen.SelectObject(&bitmapTemp);
dcMen.FillSolidRect(rectClient,RGB(120,120,120)); //主要的作图操作
dc.BitBlt(0, 0, rectClient.Width(), rectClient.Height(), &dcMen, 0, 0, SRCCOPY);//绘制图片到主DC
dcMen.SelectObject(pOldBitmap);//内存复位
bitmapTemp.DeleteObject();
pOldBitmap=NULL;
//OnCtlColor
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_DLG)
{
pDC->SetTextColor(RGB(255,255,255));//字体颜色
pDC->SetBkColor(RGB(120,120,120));
hbr=CreateSolidBrush(RGB(120,120,120));//控件的背景色
}
return hbr;
ASSERT(ix <= m_Forms.GetUpperBound());
if (ix > m_Forms.GetUpperBound()) return(false); // does not exist
CDialogEx* pDlg;
if(ix == m_nActiveForm)
{
if (m_nActiveForm != -1)
{
pDlg = m_Forms.GetAt(m_nActiveForm);
pDlg->ShowWindow(SW_SHOW);
pDlg->Invalidate();
pDlg->RedrawWindow();
}
return TRUE; //new == old
}
//hide old
if (m_nActiveForm != -1)
{
pDlg = m_Forms.GetAt(m_nActiveForm);
ASSERT(pDlg != NULL);
if(pDlg->GetSafeHwnd())
{
TRACE0("Close child window\n");
pDlg->SendMessage(WM_CLOSE);
}
m_nActiveForm = -1; // set active is null;
}
m_nActiveForm = ix; // this is the active one now;
if(ix == -1) return TRUE; //hide all
//
pDlg = m_Forms.GetAt(m_nActiveForm);
ASSERT(pDlg != NULL);
if(pDlg->GetSafeHwnd())
{
TRACE0("Show child window\n");
pDlg->MoveWindow(m_Rect);
pDlg->ShowWindow(SW_SHOW);
pDlg->Invalidate();
pDlg->RedrawWindow();
return TRUE;
}
//create
TRACE0("create child window\n");
pDlg->Create(m_dwIdArray[m_nActiveForm],m_pParentWnd);
CRect r;
int x,y;
pDlg->GetWindowRect(&r); // Get the size and position of the dialog in screen coordinates
if (m_bCentered) {
x = m_Rect.left - r.left + ((m_Rect.Width() - r.Width()) / 2);
y = m_Rect.top - r.top + ((m_Rect.Height() - r.Height()) / 2);
}
else
{ // just use the top left corner
x = m_Rect.left - r.left;
y = m_Rect.top - r.top;
}
pDlg->SetWindowPos(m_pParentWnd,x,y, r.Width(), r.Height(), SWP_NOZORDER);
pDlg->MoveWindow(m_Rect);
pDlg->ShowWindow(SW_SHOW);
pDlg->Invalidate();
pDlg->RedrawWindow();