您好,欢迎来到六九路网。
搜索
您的当前位置:首页VC++对话框添加状态栏

VC++对话框添加状态栏

来源:六九路网


1,添加两个ID资源

IDS_INDICATOR_X,

IDS_INDICATOR_Y

2.定义对象和数组、

在对话框头文件中定义对象

CSTARTUSBAR m_bar;

在对话框源文件.CPP中定义数组

static UINT BASED_CODE indicators[]=

{

IDS_INDICATOR_X,

IDS_INDICATOR_Y

};

3创建在状态栏在ONINITDIALOG()

//statusbar

m_bar.Create(this);

m_bar.SetIndicators(indicators,2);

CRect rect;

GetClientRect(&rect);

m_bar.SetPaneInfo(0,IDS_INDICATOR_X,SBPS_NORMAL,rect.Width()-100);

m_bar.SetPaneInfo(1,IDS_INDICATOR_Y,SBPS_STRETCH,0);

m_bar.GetStatusBarCtrl().SetBkColor(RGB(180,180,180));

RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,AFX_IDW_CONTROLBAR_FIRST);

//

4.响应函数

void CDialogStatusBarDlg::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

CString s,s1;

s.Format(\"鼠标光标位置:X=%d\",point.x);

s1.Format(\"Y=%d\",point.y);

m_bar.SetPaneText(0,s); //在窗格显示鼠标X坐标

m_bar.SetPaneText(1,s1); //在窗格显示鼠标Y坐标

CDialog::OnMouseMove(nFlags, point);

}

VC++对话框中添加状态栏的方法

方法一:

1.添加成员变量CStatusBarCtrl m_StatusBar;

2.在OnInitDialog()中加入:

m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBT_OWNERDRAW, CRect(0,0,0,0), this, 0);

int strPartDim[3]= {100, 200, -1}; //分割数量

/////这里要说明一下,分割的大小是这样决定的,如上面分的3个窗口,第一大小为100,第二个也为100(即200-100),第三个是状态栏的整个大小减去200.

m_StatusBar.SetParts(3, strPartDim);

//设置状态栏文本

m_StatusBar.SetText(\"分栏一\

m_StatusBar.SetText(\"分栏二\

m_StatusBar.SetText(\"分栏三\

//下面是在状态栏中加入图标

m_StatusBar.SetIcon(1,

SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME),

FALSE));//为第二个分栏中加的图标

方法二:

1.添加成员变量CStatusBar m_wndStatusBar;

2.在OnInitDialog()中加入:

static UINT indicators[] =

{

ID_SEPARATOR, // status line indicator

ID_INDICATOR_CAPS, //CAP lock indicator.

ID_INDICATOR_NUM, //NUM lock indicator.

ID_INDICATOR_SCRL, //SCRL lock indicator.

};

if (!m_wndStatusBar.Create(this) ||

!m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT)))

{

TRACE0(\"Failed to create status barn\");

return -1; // fail to create

}

UINT nID; //控制状态栏里面的分栏

m_wndStatusBar.SetPaneInfo(0,nID,SBPS_STRETCH|SBPS_NOBORDERS,100); //返回值存nID中

m_wndStatusBar.SetPaneText(0,\"就绪\");

m_wndStatusBar.SetPaneInfo(1,nID,SBPS_NORMAL,100);

m_wndStatusBar.SetPaneText(1,\"大写\");

m_wndStatusBar.SetPaneInfo(2,nID,SBPS_POPOUT,100);

m_wndStatusBar.SetPaneText(2,\"数字\");

// SetPaneInfo()函数的第三个参数的可选项如下:

// The following indicator styles are supported:

// SBPS_NOBORDERS No 3-D border around the pane.

// SBPS_POPOUT Reverse border so that text \"pops out.\"

// SBPS_DISABLED Do not draw text.

// SBPS_STRETCH Stretch pane to fill unused space. Only one pane per status bar can have this style.

// SBPS_NORMAL No stretch, borders, or pop-out.

//----------------让这个状态栏最终显示在对话框中-------------

RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务