增强型的状态条_第1页
增强型的状态条_第2页
增强型的状态条_第3页
增强型的状态条_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VC技巧四 - 工具条和状态条增强型的状态条 首先在你的应用中添加一个新类,这个类的基类是CStatusBar类。本文中这个类叫做CEnhanceStatusBar。在头文件中声明以下的控件ID和标志:#define IDC_PROGRESS 3001 /进程条#define IDC_INFOBUTTON 3002 /Info按钮#define IDC_LEFTBUTTON 3003 /左移按钮#define IDC_RIGHTBUTTON 3004 /右移按钮#define ENHANCEBAR_PROGRESS 1 /进程条标志#define ENHANCEBAR_INFO 2 /Info

2、按钮标志#define ENHANCEBAR_BUTTON 4 /左、右移按钮标志将下列成员函数和成员变量添加到CEnhanceStatusBar类中,并且根据你的需要设置其属性为public/protected/private:CBitmapButton LeftButton; /左移按钮CBitmapButton RightButton; /右移按钮CBitmapButton InfoButton; /Info按钮CProgressCtrl ProgressControl; /进程条/下面的四个成员函数返回各个控件:CBitmapButton& GetLeftButton() re

3、turn LeftButton;CBitmapButton& GetRightButton() return RightButton;CBitmapButton& GetInfoButton() return InfoButton;CProgressCtrl& GetProgressControl() return ProgressControl;UINT ButtonWidth; /按钮宽度UINT ButtonHeight; /按钮高度UINT ButtonSpace; /按钮间距int StatusFlags; /状态条标志int ProgressPane; /进

4、程条所在的pane标号int ButtonPane; /按钮所在的pane标号BOOL Create(CWnd* wnd, int flags, int progress, int button);/状态条生成函数virtual BOOL AddButtonControl(); /添加按钮控件virtual BOOL AddProgressControl(); /添加进程条控件virtual void PositionControls(); /调整控件位置virtual void DestroyControls(); /删除控件/下面是为了测试按钮及进程条控件而添加的一些函数及变量CStrin

5、gList Messages; /一组CString,用于存贮讯息POSITION CurrentMessagePosition; /当前讯息在List中的位置virtual BOOL AddMessage(CString msg, int pos); /加入一条讯息virtual BOOL ClearMessages(); /删除所有讯息virtual void SetProgress(BOOL show, int range); /设置进程条编写构造函数和析构函数,并给Create()函数加入代码:CEnhanceStatusBar:CEnhanceStatusBar() /初始化参数 B

6、uttonWidth = 14; ButtonHeight = 13; ButtonSpace = 3; CurrentMessagePosition = 0; StatusFlags = 0; ProgressPane = 0; ButtonPane = 0;CEnhanceStatusBar:CEnhanceStatusBar() ClearMessages();/删除所有讯息 DestroyControls();/删除控件BOOL CEnhanceStatusBar:Create(CWnd* wnd, int flags, int progress, int button) if (m_

7、hWnd =0) if (!CStatusBar:Create(wnd) return FALSE; ClearMessages(); DestroyControls();/在通过菜单命令改变状态条格式时,这个调用很重要, /因为各控件只能生成一次,所以必须先删除 /得到标志和pane号 StatusFlags = flags;/flags标志状态条的格式,有无进程条和某些按钮等。 ProgressPane = progress;/progress表示状态条所在的pane号 ButtonPane = button;/button表示按钮所在的pane号 if (!AddProgressCont

8、rol()/加入进程条 return FALSE; if (!AddButtonControl()/加入按钮 return FALSE; /加入你自己的控件 /if (!AddCustomControl() / return FALSE; /加入你自己的控件 EnableToolTips(TRUE); PositionControls();/调整控件位置 /调整你自己的控件的位置 /PositionCustomControl(); /调整你自己的控件的位置 return TRUE;给AddButtonControl()、AddProgressControl()和DestroyControls(

9、)函数加入代码:BOOL CEnhanceStatusBar:AddButtonControl() /设置ButtonRect CRect ButtonRect; ButtonRect.left = 100; ButtonRect.top = 2; ButtonRect.right = 114; ButtonRect.bottom = 15; /下面加入左移和右移按钮 if (StatusFlags & ENHANCEBAR_BUTTON) if (!LeftButton.Create("",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW, But

10、tonRect,this, IDC_LEFTBUTTON) TRACE0("Failed to create LeftButton buttonn"); return FALSE; if (!LeftButton.LoadBitmaps(IDB_LEFTBUTTON,IDB_LEFTBUTTON_SEL,NULL, IDB_LEFTBUTTON_DIS) TRACE0("Failed to load LeftButton bitmapn"); return FALSE; LeftButton.EnableWindow(FALSE); if(!RightB

11、utton.Create("",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW, ButtonRect,this,IDC_RIGHTBUTTON) TRACE0("Failed to create RightButton buttonn"); return FALSE; if (!RightButton.LoadBitmaps(IDB_RIGHTBUTTON,IDB_RIGHTBUTTON_SEL, NULL,IDB_RIGHTBUTTON_DIS) TRACE0("Failed to load RightButton bit

12、mapn"); return FALSE; RightButton.EnableWindow(FALSE); /下面加入Info按钮 if (StatusFlags & ENHANCEBAR_INFO) if (!InfoButton.Create("",WS_CHILD|WS_VISIBLE|BS_OWNERDRAW, ButtonRect,this,IDC_INFOBUTTON) TRACE0("Failed to create InfoButtonn"); return FALSE; if (!InfoButton.LoadBitmaps(IDB_INFO,IDB_INFO_SEL,NULL,IDB_INFO_DIS) TRACE0("Failed to load InfoButton bitmapn"); return FALSE; InfoButt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论