游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1695|回复: 2

VC++,SDI?0?如何可以在MainFrame右下?示progress

[复制链接]

414

主题

611

帖子

621

积分

高级会员

Rank: 4

积分
621
发表于 2007-7-27 23:16:00 | 显示全部楼层 |阅读模式
SDI?0?如何可以在MainFrame右下?示progress,就是可以跑一???度的??B(就像IE6)
我有一段程式??芎芫?我希望?绦?r可以?示?度在MainFrame的右下角,可是?段程式(Load XFile Model)的?度我?如何得知,目前跑到百分之??需要multithread??

10

主题

214

帖子

402

积分

中级会员

Rank: 3Rank: 3

积分
402
发表于 2007-7-28 21:40:00 | 显示全部楼层

Re: VC++,SDI?0?如何可以在MainFrame右下?示progress

google CStatusBar 进度条  [em2] [em13]

18

主题

493

帖子

494

积分

中级会员

Rank: 3Rank: 3

积分
494
发表于 2007-7-28 22:27:00 | 显示全部楼层

Re:VC++,SDI?0?如何可以在MainFrame右下?示progress

够造一个CProgressCtrl的对象`
掉用CProgressCtrl中的Create创建一个进度拦的控件
CProgressCtrl::Create

在CMainFrame中添加
protected:  
CProgressCtrl m_progress;

首先要获得进度条的位子的区域的大小`
用CStatusBar::GetItemRect可以办到`它的第一个参数是用来获取进度条要放的那个位子的`
看它在指示器中所站的索引是多少`
必须在CMainFrame头文件中自定义一个消息#define UM_PROGRESS                WM_USER+1
接下来对消息响应函数的原形进行声明afx_msg void OnProgress();
消息映射`ON_MESSAGE(UM_PROGRESS,OnProgress)

创建一个WM_PAINT的消息
void CMainFrame::OnPaint()
{
        CPaintDC dc(this); // device context for painting
       
        // TODO: Add your message handler code here
        CRect rect;
        m_wndStatusBar.GetItemRect(2,&rect);
        if(!m_progress.m_hWnd)
                m_progress.Create(WS_CHILD | WS_VISIBLE ,//| PBS_SMOOTH,
                        rect,&m_wndStatusBar,123);
        else
                m_progress.MoveWindow(rect);
        m_progress.SetPos(50);
        // Do not call CFrameWnd::OnPaint() for painting messages
}

在OnTimer中添加m_progress.StepIt();

利用CProgressCtrl::SetRange可一设置进度栏的范围`
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 17:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表