我在SDI里面加了背景图片,再动态生成CStatic,还在CStatic里显示了字,但看不见显示的字。我想是不是由于背景颜色的问题造成的。请各位指教。谢谢

解决方案 »

  1.   

    先创建背景,再创建CStatic窗口
      

  2.   

    正如上面所说,你可能把CStatic放到下面一层去了。还有别忘了,给CStatic控件赋值之后,UpdateData(FALSE)一下
      

  3.   

    我的做法是:  
    背景是在CBimapView::OnEraseBkgnd(CDC* pDC)中加入的,代码是:
    {   CView::OnEraseBkgnd(pDC);
        CDC dcMem;
        CClientDC dc(this);
        HBITMAP hbit;
        CRect rect;
        GetClientRect(rect);
        dcMem.CreateCompatibleDC(&dc);
        hbit = (HBITMAP)dcMem.SelectObject(&bitmap);
        GetDC()->BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);
    }
    在CBimapView::OnInitialUpdate()中动态创建CStatic,显示文字,这次文字是看见的。
    void CBimapView::OnInitialUpdate() 
    {
    CView::OnInitialUpdate();

    // TODO: Add your specialized code here and/or call the base class
    CRect rect(10,10,200,40);
    m_pCtrlBtn=new CStatic;
    m_pCtrlBtn->Create("1234",WS_VISIBLE|WS_BORDER,rect,this,1000);
    m_pCtrlBtn->ShowWindow(SW_SHOW);
    }
    但又出现了问题,就是当击活其它程序窗口后,再击活本程序,那些文本框和文字就不见了。
    这是不是跟窗口的重画有关?可是我在
    void CBimapView::OnDraw(CDC* pDC) 中进行
    m_pCtrlBtn->ShowWindow(SW_SHOW);不能解决问题
    请问各位高手,应该如何解决这个问题?
      

  4.   

    m_pCtrlBtn->ShowWindow(SW_SHOW);不能解决问题这样肯定不对的,因为不是窗口隐藏的关系.是窗口需要重画.其实你在视图里面应该是用TextOut来输出文字的呀!
      

  5.   

    用TextOut输出文字也可以啊。但怎样设置它的字体大小和字体颜色呢?
      

  6.   

    SetTextColor(颜色);
    要设置字体,要使用CFont.CreateFont(...)