我想在 CXXXXCtrl::OnDraw 函数里实现,但是不知道如何画出来。

解决方案 »

  1.   

    多谢楼上回复,我这样用CProgressCtrl;可是不对。void CUEasyCom_Client_ocxCtrl::OnDraw(
    CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
    {
    pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
    myProgressCtrl.Create(WS_CHILD|WS_VISIBLE|PBS_SMOOTH, rcBounds, this, 1);
    //myProgressCtrl 是CProgressCtrl 对象
    }
      

  2.   

    TO:syy64(太平洋)请问网上有类似的示例代码下载吗?
      

  3.   

    自己先搜索啦http://topic.csdn.net/t/20051227/16/4484436.html
      

  4.   

    编译通过了,但是在画控件的时候 wincore.cpp 出了个assertion错误。
    下面是OnDraw的代码
    void CUEasyCom_Client_ocxCtrl::OnDraw(
    CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
    {
    CWnd *pWin = pdc->GetWindow();
    CRect rProgress;
    myProgressCtrl.Create(WS_CHILD|WS_VISIBLE, rcBounds, pWin, 1);
    //myProgressCtrl 是CProgressCtrl 对象

    }
      

  5.   

    CRect rProgress;
    myProgressCtrl.Create(WS_CHILD|WS_VISIBLE, rcBounds, pWin, 1);应该放在别的函数里,不能放在OnDraw里面;OnDraw里面只能给进度条赋进度值。
      

  6.   

    Progress控件应该在主控件创建完成后再创建吧,否则Create参数中的父窗口你怎么指定?
    至于进度的控制需要你自定义消息或者用控件的事件机制来完成了
    最近没做activex,OnCreate和OnDraw的顺序我不记得了,如果后者在前者之后,那可以在OnDraw里做创建,建议设置一个标志位bCreated,防止重复创建出错
    Cyourctrl::Cyourctrl()
      :bCreated(FALSE)
    {
        ...
    }void Cyourctrl::OnDraw(...)
    if (!bCreated)
    {
        BOOL bSuccess = m_progress.Create(...);
        if (!bSuccess)
        {
            MessageBox("创建进度条失败");
            return;
        }
        bCreated = true;
    }
      

  7.   

    herd dfg wer sdv erf