在mfc怎样在工具条中添加编辑框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在mfc怎样在工具条中添加编辑框相关的知识,希望对你有一定的参考价值。

在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;
参考技术A 在CMainFrame中加成员变量CComboBoxm_comboList;CStaticm_static;然后是OnCreate()中添加代码,注释掉的是添加下拉框的代码,如下:intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct)if(CFrameWndEx::OnCreate(lpCreateStruct

MFC 在编辑控件框中显示多行文本

【中文标题】MFC 在编辑控件框中显示多行文本【英文标题】:MFC displaying multiple-lines of text in Edit Control box 【发布时间】:2012-01-19 06:32:23 【问题描述】:

我正在尝试实现一个显示文件名的工具。 我想通过使用 SetWindowText() 方法来做到这一点。 但是,当我尝试循环使用此方法时, 文本显示为一行,并不断刷新。

这里是代码 sn-p

for (int i = 0; i<10; i++)

  SetWindowText(filenames);

请帮忙!谢谢。

【问题讨论】:

这是你的真实代码吗?你显示了 10 次文件名,不管是什么 【参考方案1】:

SetWindowText 用您提供的字符串替换当前窗口文本。 所以,如果你想用它显示多行,你首先必须创建一个多行字符串。

一个简单的例子:

CStringArray names;

// Fill names

CString str;
for (INT_PTR i = 0; i < names.GetCount() ; ++i)

    str += names[i] + _T("\r\n");


c_MyEdit.SetWindowText(str);

【讨论】:

【参考方案2】:

另一种经过时间考验的同时显示多个名称的方法是列表框。 MFC 为 CListBox 类提供了一个很好的包装器(请参阅http://msdn.microsoft.com/en-us/library/y04ez4c9%28v=vs.80%29.aspx)。如果列表很长,这具有可滚动和(可选)排序的额外好处。

【讨论】:

以上是关于在mfc怎样在工具条中添加编辑框的主要内容,如果未能解决你的问题,请参考以下文章

MFC怎样设置编辑框响应键盘啊?我做了个计算器,将编辑框禁止了,又想能用键盘输入,怎么办呀?

mfc如何将一个编辑框中的数字追加到另一个编辑框,不是覆盖,而是接在原来的后面显示?

MFC的编辑框里不能按时间依次显示递增的数字

vc中编辑框的文字怎样变大

MFC中如何给编辑框设置文本内容?

怎么用MFC,将复选框选中的文字在编辑框中显示出来,例如下面的图片,就是说将选中的课程在编辑框中显示出