您的位置:首页 > 其它

CProgressCtrl

2015-07-29 18:58 736 查看
这里创建进度栏;

这里需要一个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风格的任何组合,附加下列进度条控件风格:
·PBS_VERTICAL垂直显示进度信息,从顶到底。没有这个标志,进度条控件从左到右水平显示。
·PBS_SMOOTH逐渐显示,平滑地填充进度条控件。没有这个标志,控件将用块来填充。
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);

m_CProgress.Create();

}

else

{

CRect rect

m_StatusBar.GetItemRect(index,rect);

m_CProgress.MoveTo()

}

这里状态栏就不会受重绘的影响了;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: