如何使ActiveX控件画出进度条? 我想在 CXXXXCtrl::OnDraw 函数里实现,但是不知道如何画出来。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 多谢楼上回复,我这样用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 对象} TO:syy64(太平洋)请问网上有类似的示例代码下载吗? 自己先搜索啦http://topic.csdn.net/t/20051227/16/4484436.html 编译通过了,但是在画控件的时候 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 对象 } CRect rProgress;myProgressCtrl.Create(WS_CHILD|WS_VISIBLE, rcBounds, pWin, 1);应该放在别的函数里,不能放在OnDraw里面;OnDraw里面只能给进度条赋进度值。 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;} herd dfg wer sdv erf 菜单项拖动时的问题 去国内企业还是外企?外企待遇高点。。。。 请问 到一个公司多久才算是老员工呵 求你真心帮下我看下代码错误,求求求了,求教求求了 急急!一个很棘手的问题 集思广益:怎样最大限度利用公司的资源? 如何在一个dialog上直接画图 请问:有没有installer可以安装驱动程序?? vc如何生成背景透明GIF图? 请问如何将Connection变量保存到GWL_USERDATA中? 我想在循环体中执行不同语句? 如何在窗口被遮挡得情况下截图
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 对象
}
下面是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 对象
}
myProgressCtrl.Create(WS_CHILD|WS_VISIBLE, rcBounds, pWin, 1);应该放在别的函数里,不能放在OnDraw里面;OnDraw里面只能给进度条赋进度值。
至于进度的控制需要你自定义消息或者用控件的事件机制来完成了
最近没做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;
}