WinCE下一个进度条问题!
最近有个问题,一个含进度条设置的类在XP系统下用VC测试没有问题,而在CE下有点问题:该类叫CProgStatusBar继承于CStatusBarCtrl,基本内容与http://blog.sina.com.cn/s/blog_4ac2fbad01000cmd.html类似。只是继承类不同,还有其中一些代码有所变动,为明确,附上代码如下:
int CProgStatusBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
lpCreateStruct->style |= WS_CLIPCHILDREN; //该子窗口不被父窗口绘制,而是自己绘制
VERIFY(m_progress.Create(WS_CHILD, CRect(), this, 1));//创建CProgressCtrl进度条窗口
m_progress.SetRange(0,100);
VERIFY(CStatusBarCtrl::OnCreate(lpCreateStruct) == 0);
return 0;
}
void CProgStatusBar::OnSize(UINT nType, int cx, int cy)
{
CStatusBarCtrl::OnSize(nType, cx, cy);
CRect rc;
VERIFY(GetRect(0, &rc));//获取第0格的位置与大小
rc.right=rc.left+200;//修改进度条的位置
m_progress.MoveWindow(&rc);
}
void CProgStatusBar::OnProgress(UINT pct)
{
CProgressCtrl & pc = m_progress;
DWORD dwOldStyle = pc.GetStyle();
DWORD dwNewStyle = dwOldStyle;
if(pct>0)//如果pct>0,将显示进度条
dwNewStyle |= WS_VISIBLE;
else//否则隐藏进度条;
dwNewStyle &= ~WS_VISIBLE;
if (dwNewStyle != dwOldStyle)
{
SetWindowText(NULL);
::SetWindowLong(pc.m_hWnd, GWL_STYLE, dwNewStyle);
}
pc.SetPos(pct);// 设置进度条的当前位置
if (pct == 0)
GetParent()->PostMessage(WM_SETMESSAGESTRING, AFX_IDS_IDLEMESSAGE);
}