这里创建进度栏;
这里需要一个Class:CProgressCtrl这个类
Fram的OnCreate 中创建CProgressCtrl m_Progress对象;
然后调用他的CProgressCtrl的create()函数创建一个 CProgressCtrl对象;
CProgressCtrl::Create
BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID);
返回值:如果CProgressCtrl对象被成功创建则返回TRUE;否则返回FALSE。
参数:
dwStyle | 指定进度条控件的风格。除了Windows风格的任何组合,附加下列进度条控件风格:
| ||||||
rect | 指定进度条控件的尺寸和位置。它可以是一个CRect对象或者是一个RECT结构。由于此控件必须是一个子窗口,所以指定的坐标是相对于pParentWnd的客户区的。 | ||||||
pParentWind | 指定进度条控件的父窗口,通常是一个CDialog。它不能是NULL。 | ||||||
nID | 指定进度条控件的ID。 |
说明:
你可以分两步来构造一个CProgressCtrl对象。首先调用构造函数来创建CProgressCtrl对象;然后调用Create来创建进度条控件。
这里详细的写了 如何创建一个CProgressCtrl;
现在可以将这个进度栏放在状态栏中, 这里需要rect就行;
CRect rect
m_StatusBar.GetItemRect(index,rect);
然后在这里rect就被设置了第index索引的状态栏;
但是现在又出现一个问题就是在 重绘的时候 ,发现CprgressCtrl在重绘之后他的大小却没有发生变化
这里就需要 设置状态栏的最终办法设置在状态栏里面;
if(m_CProgressCtrl.m_hWnd == NULL)
{
CRect rect
m_StatusBar.GetItemRect(index,rect);
}
else
{
CRect rect
m_StatusBar.GetItemRect(index,rect);
m_CProgress.MoveTo()
}
这里状态栏就不会受重绘的影响了;