CProgressStatusBar::CProgressStatusBar(){
m_nIndex = -1;
}
CProgressStatusBar::~CProgressStatusBar(){
}
BEGIN_MESSAGE_MAP(CProgressStatusBar, CStatusBar)
//{{AFX_MSG_MAP(CProgressStatusBar)
ON_WM_CREATE()
ON_WM_SIZE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
CProgressCtrl* CProgressStatusBar::GetProgressBar(){
return &m_objProgress;
}
int CProgressStatusBar::OnCreate(LPCREATESTRUCT lpCreateStruct){
if (CStatusBar::OnCreate(lpCreateStruct) == -1)
return -1;
CRect rect;
m_objProgress.Create(WS_CHILD | PBS_SMOOTH, rect, this, 0);
return 0;
}
UINT CProgressStatusBar::ShowProgressBar(int nIndex, BOOL isVisible){
CRect rect;
int nOldIndex = m_nIndex;
m_nIndex = nIndex;
GetItemRect(nIndex, rect);
m_objProgress.MoveWindow(rect);
int nState = isVisible ? SW_SHOWNA : SW_HIDE;
if(nIndex <= -1){
nState = SW_HIDE;
}
m_objProgress.ShowWindow(nState);
return nOldIndex;
}
void CProgressStatusBar::OnSize(UINT nType, int cx, int cy){
CStatusBar::OnSize(nType, cx, cy);
if (!::IsWindow(m_objProgress.m_hWnd) || m_nIndex == -1)
return;
// 位置を修正
CRect rect;
GetItemRect(m_nIndex, rect);
m_objProgress.MoveWindow(rect, FALSE);
}
void CProgressStatusBar::SetRange32(int nLower, int nUpper){
m_objProgress.SetRange32(nLower, nUpper);
}
void CProgressStatusBar::SetRange(short nLower, short nUpper){
m_objProgress.SetRange(nLower, nUpper);
}
void CProgressStatusBar::GetRange(int &nLower, int &nUpper){
m_objProgress.GetRange(nLower, nUpper);
}
int CProgressStatusBar::GetPos(){
return m_objProgress.GetPos();
}
int CProgressStatusBar::SetPos(int nPos){
return m_objProgress.SetPos(nPos);
}
int CProgressStatusBar::OffsetPos(int nPos){
return m_objProgress.OffsetPos(nPos);
}
int CProgressStatusBar::SetStep(int nStep){
return m_objProgress.SetStep(nStep);
}
int CProgressStatusBar::StepIt(){
return m_objProgress.StepIt();
}
|