MFC 基于对话框 程序,如何添加状态栏

MFC 基于对话框 程序,如何添加状态栏,第1张

(2)在OnInitDialog中或其它合适的消息响应中加如下代码:(函数可查看MSDN)

m_StatBar=new

CStatusBarCtrl

RECT

m_Rect

GetClientRect(&m_Rect)

//获取对话框的矩形区域

m_Rect.top=m_Rect.bottom-20

//设置状态栏的矩形区域

m_StatBar->Create(WS_BORDER|WS_VISIBLE|CBRS_BOTTOM,m_Rect,this,3)

int

nParts[4]=

{100,

200,

300,-1}

//分割尺寸

m_StatBar->SetParts(4,

nParts)

//分割状态栏

m_StatBar->SetText("这是第一个指示器",0,0)

//第一个分栏加入"这是第一个指示器"

m_StatBar->SetText("这是第二个指示器",1,0)

//以下类似

/*也可使用以下方式加入指示器文字

m_StatBar.SetPaneText(0,"这是第一个指示器",0)

其他 *** 作:m_StatBar->SetIcon(3,SetIcon(AfxGetApp()->LoadIcon(IDI_ICON3),FALSE))

//在第四个分栏中加入ID为IDI_ICON3的图标

*********************************************/m_StatBar->ShowWindow(SW_SHOW)二、(1)在对话框类的.cpp源文件的开头加上如下代码:

static

UINT

BASED_CODE

indicators[]=

//状态栏的指示器列表,如有未定义的字符串名,需在Resource

View的String

Table中添加定义{ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_USER,//需在Resource

View的String

Table中添加定义}(2)在要添加状态栏的对话框类的类定义中

CStatusBarCtrl

m_StatusBar

(3)在OnInitDialog中或其它合适的消息响应中加如下代码:

//不能是突出和无边框风格

m_StatusBar.CreateEx(this,SBT_TOOLTIPS,WS_CHILD

|

WS_VISIBLE

|

CBRS_BOTTOM,AFX_IDW_STATUS_BAR

)

m_StatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT))//设置指示器数量

CRect

rect

动态创建头文件中声明:

CEdit* m_Edits

cpp文件的OnInitDialog函数中:

m_Edits=new CEdit(50)

for(int i=0i<50i++)

{

m_Edits[i].Create(……)

}

程序执行结束时:

for(int i=0i<50i++)

{

delete []m_Edits

}

不过这种情况只适合你所有的Edit控件在对话框上的位置都是按规律排列的。如果不是,请用下面的方法:

在头文件中声明足够多元素的CEdit数组:

CEdit m_Edit[50]//假设你事先放好了50个Edit控件

然后找到对话框的DoDataExchange(CDataExchange* pDX)函数,添加如下代码:

DDX_Control(pDX,IDC_XXX, m_Edit[0])

DDX_Control(pDX,IDC_YYY, m_Edit[1])

……………………

IDC_XXX和IDC_YYY是各个Edit的ID

像这样手动将所有编辑框添加完就行了,以后就可以用数组的方式访问他们了

在CMainFrame中建两个对象

CMFCToolBar m_myToolBar //工具条

CComboBox m_comboList //下拉框

创建一个工具栏资源IDR_MYTOOLBAR,其中一个按钮id为ID_BUTTONCOMBO

在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)添加 ,代码如下:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)

return -1

BOOL bNameValid

// 基于持久值设置视觉管理器和样式

OnApplicationLook(theApp.m_nAppLook)

if (!m_wndMenuBar.Create(this))

{

TRACE0("未能创建菜单栏\n")

return -1 // 未能创建

}

m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY)

// 防止菜单栏在激活时获得焦点

CMFCPopupMenu::SetForceMenuFocus(FALSE)

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

!m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))

{

TRACE0("未能创建工具栏\n")

return -1 // 未能创建

}

if (!m_myToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

!m_myToolBar.LoadToolBar(IDR_MYTOOLBAR ))

{

TRACE0("未能创建工具栏\n")

return -1 // 未能创建

}

CString strToolBarName

bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD)

ASSERT(bNameValid)

m_wndToolBar.SetWindowText(strToolBarName)

CString strCustomize

bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE)

ASSERT(bNameValid)

m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize)

// 允许用户定义的工具栏 *** 作:

InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId)

if (!m_wndStatusBar.Create(this))

{

TRACE0("未能创建状态栏\n")

return -1 // 未能创建

}

m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))

// TODO: 如果您不希望工具栏和菜单栏可停靠,请删除这五行

m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY)

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY)

m_myToolBar.EnableDocking(CBRS_ALIGN_ANY)

EnableDocking(CBRS_ALIGN_ANY)

DockPane(&m_wndMenuBar)

DockPane(&m_wndToolBar)

DockPane(&m_myToolBar)

// 启用 Visual Studio 2005 样式停靠窗口行为

CDockingManager::SetDockingMode(DT_SMART)

// 启用 Visual Studio 2005 样式停靠窗口自动隐藏行为

EnableAutoHidePanes(CBRS_ALIGN_ANY)

// 启用工具栏和停靠窗口菜单替换

EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR)

// 启用快速(按住 Alt 拖动)工具栏自定义

CMFCToolBar::EnableQuickCustomization()

// if (CMFCToolBar::GetUserImages() == NULL)

// {

// // 加载用户定义的工具栏图像

// if (m_UserImages.Load(_T(".\\UserImages.bmp")))

// {

// m_UserImages.SetImageSize(CSize(16, 16), FALSE)

// CMFCToolBar::SetUserImages(&m_UserImages)

// }

// }

// 启用菜单个性化(最近使用的命令)

// TODO: 定义您自己的基本命令,确保每个下拉菜单至少有一个基本命令。

CList<UINT, UINT>lstBasicCommands

lstBasicCommands.AddTail(ID_FILE_NEW)

lstBasicCommands.AddTail(ID_FILE_OPEN)

lstBasicCommands.AddTail(ID_FILE_SAVE)

lstBasicCommands.AddTail(ID_FILE_PRINT)

lstBasicCommands.AddTail(ID_APP_EXIT)

lstBasicCommands.AddTail(ID_EDIT_CUT)

lstBasicCommands.AddTail(ID_EDIT_PASTE)

lstBasicCommands.AddTail(ID_EDIT_UNDO)

lstBasicCommands.AddTail(ID_APP_ABOUT)

lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR)

lstBasicCommands.AddTail(ID_VIEW_TOOLBAR)

lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2003)

lstBasicCommands.AddTail(ID_VIEW_APPLOOK_VS_2005)

lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLUE)

lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_SILVER)

lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLACK)

lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_AQUA)

CMFCToolBar::SetBasicCommands(lstBasicCommands)

int index = 0

RECT rect

//找到指定的工具项

while(m_myToolBar.GetItemID(index)!=ID_BUTTONCOMBO)

index++

//设置指定工具项的宽度并获取新的区域 80是宽度

m_myToolBar.SetButtonInfo(index, ID_BUTTONCOMBO, TBBS_SEPARATOR, 60)

m_myToolBar.GetItemRect(index, &rect)

//设置位置

// rect.top+=2

// rect.bottom += 200

rect.left = 0

rect.top = 2

rect.right = 60

rect.bottom = 200

// 创建并显示控件

if(!m_comboList.Create(WS_CHILD|WS_VISIBLE| CBS_AUTOHSCROLL| CBS_DROPDOWNLIST | CBS_HASSTRINGS , rect,

&m_myToolBar, ID_BUTTONCOMBO))

{

TRACE0("Failed to create combo-box\n")

return FALSE

}

//填充内容

m_comboList.AddString("25%")

m_comboList.AddString("50%")

m_comboList.AddString("75%")

m_comboList.AddString("100%")

m_comboList.AddString("125%")

m_comboList.AddString("150%")

m_comboList.AddString("175%")

m_comboList.AddString("200%")

//选择默认项

m_comboList.SetCurSel(3)

m_comboList.ShowWindow(SW_SHOW)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/8014804.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存