我的目的很简单,就是想给 在对话框上的 静态文本控件 填满色,然后画些其它的东西,可是发现结果只是给静态文本控件某一小块填色,什么原因?         CRect rcTable;
GetDlgItem(IDC_STATIC)->GetClientRect(&rcTable);

CBrush brBlack(RGB(255,0,0)); CDC *pDC=GetDC();
pDC->FillRect(&rcTable,&brBlack);

解决方案 »

  1.   

    CRect rcTable;
    GetDlgItem(IDC_STATIC)->GetWindowRect(&rcTable);
                                  ~~~~~~~~~~~~~~~~~~~~~~
             ScreenToClient(rcTable);

    CBrush brBlack(RGB(255,0,0)); CDC *pDC=GetDC();
    pDC->FillRect(&rcTable,&brBlack);
      

  2.   

    CDC  *pDC=GetDlgItem(IDC_STATIC)->GetDC(); 另外,这里IDC_STATIC应该换掉。
      

  3.   

    CDC *pDC=GetDC();  改为
    CDC *pDC = GetDlgItem(IDC_STATIC)->GetDC();  //控件上,不是dialog上填充
      

  4.   

    (1)要获得控件的尺寸,可以采用下面的办法:
        CRect rect;
        GetDlgItem(IDC_STATIC)->GetWindowRect(&rect);
        如果你要改变尺寸,可以用下面的函数:
        MoveWindow或SetWindowPos
    (2)要在控件上画图,可以采用下面的方法:
        CPaintDC dc(GetDlgItem(IDC_STATIC));
        dc.MoveTo(0,0);
        dc.lineTo(100,100);
    看看在你的静态文本控件上有没有一条线啊!
    只要了解了静态文本控件是从CWnd派生来的就可以了!