在一个Dlg上我放了一个Picture,TYPE为Frame,我想把背景改变颜色,怎么办?

解决方案 »

  1.   

    在对话框中响应wm_ctlcolor
    HBRUSH CDfgdfgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    if(pWnd->GetDlgCtrlID()==IDC_STATIC1)
    {
    CRect rc;
    pWnd->GetClientRect(&rc);
    pDC->FillSolidRect(rc.left,rc.top,rc.Width(),rc.Height(),RGB(255,0,0));

    }
    // TODO: Return a different brush if the default is not desired
    return hbr;
    }
      

  2.   

    但是为什么我进入不了这个if语句呢?我原来就遇到过这个问题,如果是个按钮什么的话,就可以,但一是static就不行。
      

  3.   

    你可以把那个Picture的ID_STATIC改为其他如IDC_PICTURE
      

  4.   

    然后这里改一下
    if(pWnd->GetDlgCtrlID()==IDC_PICTURE)
      

  5.   

    谢谢!确实是改了名字就可以了,不过为什么用IDC_STATIC就不可以呢?!
    我注意到用其他的控件,系统回自动给他们一个编号,比如有两个BTN,会叫做IDC_BUTTON1,IDC_BUTTON2。但用PIC却可以两个都叫IDC_STATIC而不冲突。为什么会这样呢?
    kingcom_xu() 老兄:
    你用的就是叫IDC_STATIC吗?
      

  6.   

    IDC_STATIC1呵呵你看走眼了后面有一个1