孙鑫 第九课之三 状态栏编程笔记

1 创建

①构造一个CStatusBar 对象

②调用Create或CreateEx函数创建一个状态栏创窗口并且它和CStatusBar对象结合

BOOL   Create(

CWnd   *pParentWnd,  //父窗口

DWORD   dwStyle=WS_CHILD  |  WS_VISIBLE  |  CBRS_BOTTOM,

UINT    nID=AFX_IDW_STATUS_BAR //状态栏ID

);

③调用SetIndicators函数用设定状态栏的每一部分

BOOL    SetIndicators(

const   UINT    *lpIDArray,  //数组

int   nIDCount //数组元素个数

);

eg.

static UINT indicators[] =

{

ID_AAA,           // status line indicator

ID_BBB,

ID_CCC,

ID_DDD,

};

CStatusBar statusBar;

statusBar.Create(this);//父窗口为当前窗口,一般为FrameWnd,其他参数默认,会有一个该状态栏的默认ID:AFX_IDW_STATUS_BAR

statusBar.SetIndicators(indicators,   sizeof(indicators) / sizeof(UINT));

 

2  六种方法更新状态栏文本

CWnd::SetWindowText

只能更新最左端的窗格

eg.

statusBar.SetWindowText("abcd");

 

CCmdUI::SetText

通过状态栏的ON_UPDATE_COMMAND_UI处理函数

 

BOOL    SetPaneText(

int   nIndex,

LPCTSTR    lpszNewText,

BOOL   bUpdate  =  TRUE

);

eg.

int    index = 0;  //该窗格在状态栏上的索引(数组中的索引)

index = statusBar.CommandToIndex(ID_XXX);   //根据该窗格的ID取得索引值

statusBar.SetPaneText(index,  "abcd");


 ④void    CFrameWnd::SetMessageText(LPCTSTR     lpszText)

eg.  这个函数只能改变索引为0的窗格文本

NOTE:此函数的调用要看在哪个类中,是否需要类型转换

如果在FrameWnd类中可直接使用

SetMessageText("abcd");


virtual CWnd*   CFrameWnd::GetMessageBar( );

返回一个指向状态栏的指针


CWnd*    CWnd::GetDescendantWindow(

int   nID,

BOOL    bOnlyPerm=FALSE

)const;

根据指定ID,返回一个指向该控件的指针


3 设置窗格信息

void    SetPaneInfo(

int   nIndex,   //窗格索引, 即在Indicators数组里的索引

UINT   nID,  //窗格新的 ID

UINT    nStyle, //风格

int   cxWidth  //窗格宽度

);

 eg.

statusBar.SetPaneInfo(index,  ID_XXX,   SBPS_NORMAL,  20);

//index是要改变的窗格的索引,  ID_XXX为窗格新的ID(一般不改,以前是什么还写什么),  20为宽度




孙鑫 第九课之三 状态栏编程笔记 - 大灰狼 - 大灰狼 的博客?

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值