我看到文档中画矩形用SolidBrush制定颜色、用Rectangle函数绘图的方法。对话框中该怎么做呢?是不是应该添加Picture Control控件,具体该如何编码实现呢?最好能给个实例。没什么编程基础,希望能详细点儿。谢谢。

解决方案 »

  1.   

    将view 中的ondraw中的代码,改到 dialog中的onpaint中......
      

  2.   

    文档View中绘制矩形:添加了WM_PAINT消息
    void CBrushRectView::OnPaint()
    {
    CPaintDC dc(this);
            CBrush br,*pOldBrush;
    br.CreateSolidBrush(RGB(0,0,255));
    pOldBrush=dc.SelectObject(&br);
    dc.Rectangle(10,10,160,110);
    dc.SelectObject(pOldBrush);
    br.DeleteObject();
    }
    在文档绘制了一个蓝色矩形,编译运行成功。建立了另一个基于CDialog的工程,在OnPaint中添加这段代码却没显示出来矩形:
    void CBrushRectDialogDlg::OnPaint() 
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作矩形中居中
    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; // 绘制图标
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    }

    CPaintDC dc(this);
    CBrush br,*pOldBrush;
    br.CreateSolidBrush(RGB(0,0,255));
    pOldBrush=dc.SelectObject(&br);
    dc.Rectangle(10,10,160,110);
    dc.SelectObject(pOldBrush);
    br.DeleteObject();
    }
      

  3.   

    CPaintDC dc(this);这句改正就好了,问题解决,谢谢fandh。