在WTL中,用画刷的方式给众多子窗口(空的)上背景颜色代码如下
CRect  rect;
   GetWindowRect(&rect);
   CPaintDC pdc(m_hWnd);
   CBrush brush=CreateSolidBrush(RGB(200,100,100));
   CBrush oldbrush=pdc.SelectBrush(brush);
   pdc.FillRect(&rect,brush);
   pdc.SelectBrush(oldbrush);但是显示的却是一条线???求教啊

解决方案 »

  1.   

    这个在哪里取得的GetWindowRect(&rect);
    你的指定指向子窗口
      

  2.   

    多谢了,说一下设计:
    在父窗口的WM_CREATE的响应函数OnCreate创建所有的子窗口,然后一个个移动(MoveWindow),每移动一个就调用上面的函数,尺寸没问题的
      

  3.   

    LRESULT CVideoView::OnShowChildVideo(WORD, WORD nID,HWND, BOOL&)(弹出菜单响应函数)
    {
          CRect rect;
    GetWindowRect(&rect);
    switch(nID)
    {
    case ID_VIDEO_1:
    {
    int width=rect.Width();
    int hight=rect.Height(); m_childvideo[0].MoveWindow(0,0,width,hight,true);
    Paintgd();
        m_childvideo[0].ShowWindow(SW_SHOW);
    }
    break;
    case ID_VIDEO_4:
    {
    int width=(rect.Width()-m_udiv)/2;
    int hight=(rect.Height()-m_udiv)/2;
    for(int i=0;i<4;i++)
    {
    if(i<2)
    {
     m_childvideo[i].MoveWindow(i*(width+m_udiv),0,width,hight,true);
    }
    else
    {
         m_childvideo[i].MoveWindow((i-2)*(width+m_udiv),(hight+m_udiv),width,hight,true);
    }
             
             
               m_childvideo[i].ShowWindow(SW_SHOW);
               Paintgd();
            }
    }
    break;
    Paintgd();内的代码是
    CRect rect;
      GetWindowRect(&rect);
      CPaintDC pdc(m_hWnd);
      CBrush brush=CreateSolidBrush(RGB(200,100,100));
      CBrush oldbrush=pdc.SelectBrush(brush);
      pdc.FillRect(&rect,brush);
      pdc.SelectBrush(oldbrush);
      

  4.   

    你创建了子窗口就得到了子窗口的句柄,通过句柄获取子窗口的rect