wxStatusBar 使用小记
来源:互联网 发布:语音打电话软件 编辑:程序博客网 时间:2024/06/05 23:41
每个 wxFrame 等窗口里面都有一个默认的 wxStatusBar ,但是这个默认的 StatusBar 只能做一些简单的事,比如用 wxLogStatus() 来写些字。
其实可以自己建一个继承 wxStatusBar 的类,这样就可以实现自己想要的功能。在 wxWidGets 的 samples 里面就演示有这样的做法。
我的要求不高,只是想给程序加一个处理时的进度条。我自己建了一个类,大概如下:
class MyStatusBar : public wxStatusBar
{
public:
MyStatusBar(wxWindow *parent, wxWindowID id, long style = wxST_SIZEGRIP, const wxString& name = _T("statusBar"));
void SetRange(int n);
void SetValue(int n);
void OnSize(wxSizeEvent& event);
enum
{
Field_Text1,
Field_Text2,
Field_Status,
Field_Process
};
private:
wxGauge *m_ProgressBar;
DECLARE_EVENT_TABLE()
};
{
public:
MyStatusBar(wxWindow *parent, wxWindowID id, long style = wxST_SIZEGRIP, const wxString& name = _T("statusBar"));
void SetRange(int n);
void SetValue(int n);
void OnSize(wxSizeEvent& event);
enum
{
Field_Text1,
Field_Text2,
Field_Status,
Field_Process
};
private:
wxGauge *m_ProgressBar;
DECLARE_EVENT_TABLE()
};
然后在构造函数里面初始化 wxGauge 的实例。特别是在 OnSize() 里面要加入一些处理,让进度条的大小始终和状态栏某一格子的大小一样。如下:
void MyStatusBar::OnSize(wxSizeEvent& event)
{
wxRect rect;
GetFieldRect(Field_Process, rect);
m_ProgressBar->SetSize(rect.x, rect.y, rect.width, rect.height);
}
{
wxRect rect;
GetFieldRect(Field_Process, rect);
m_ProgressBar->SetSize(rect.x, rect.y, rect.width, rect.height);
}
但是,当我把进度条放在最后一个格的时候,它总是贴不到最右边。如下图。
好像右下角那个三角形总是存在的。既时最大化时,那个进度条也贴不到最右边。
目前我还不知道有什么好方法可以解决。所以我只能把进度条放在倒数第二个格子里面了。
- wxStatusBar 使用小记
- NUnit使用小记!
- Display Tag使用小记
- TreeView使用小记
- Ubuntu使用小记
- VC6使用小记
- junit初步使用小记
- sudo使用小记
- Display Tag使用小记
- autoconf 使用小记
- Display Tag使用小记
- 使用ObjectDataSource 小记
- Display Tag使用小记
- AQtime使用小记
- 优先队列使用小记
- JUnit使用小记
- Display Tag使用小记
- 使用liferay开发小记
- 08北京
- C#获取图片的指定部分
- IBatisNet介绍
- VNC快速设置
- 《软件估算》——估算的含义
- wxStatusBar 使用小记
- Web.config配置详解
- 几招抢反弹的具体方法
- VSS和CVS比较
- VSS的相关文章和别人的观点
- S3C2410:DMA介紹
- Java中获取汉字字符串编码格式的一种可行方式
- 关注SOA in Action
- 什么是VSS——来自百度的词条解释