首先给你大家说明的是,其实这个东西不是很难,难的就是你不细心,废话不多说了,开工,
第一, 用向导生成一个单文档应用程序,什么也不用改
第二, 在CMainFrame框架中添加一个CComboBox类型的全局变量,取名为m_wndComBox,再点击“resourceView”,在“string table”中添加一个ID,取名为“ID_COMBOX
第三, 在CMainFrame类的OnCreate函数中最后一行添加如下代码
CToolBarCtrl&pToolBar=m_wndToolBar.GetToolBarCtrl(); //获得一个工具栏的对象
int Count;
Count=pToolBar.GetButtonCount();//得到工具栏中有多少个按钮
m_wndToolBar.SetButtonInfo(Count-1,ID_COMBOX1,TBBS_SEPARATOR,120);//这句话很重要,设置最后一个按钮的信息,详细的用法请参考msdn,当然了看看其他的资料也是一样的
CRect rect;
pToolBar.GetItemRect(Count-1 ,&rect);//得到最后一个按钮的大小,以便后面可以设置COMBOX的大小
rect.bottom+=120; //利用上面得到的大小重新设置ComBox的高度
rect.right=rect.left+120; //这就是设置ComBox按钮的宽度(这里可以调整ComBox按钮的宽度)
if(!m_wndComBox.Create(WS_VISIBLE|WS_CHILD|CBS_AUTOHSCROLL|CBS_DROPDOWNLIST,rect,&m_wndToolBar,ID_COMBOX1)) //这里是动态创建一个ComBox,包括一些样式等等,具体详见msdn
{
TRACE0("Failedto create ComBox \n");
return -1; // 创建失败就返回
}
else
{
m_wndComBox.AddString("添加成功");
m_wndComBox.AddString("添加成功12");
m_wndComBox.SetCurSel(0);
}
上面的步骤已经实现怎么样在工具栏上添加COMBOX,那么我们怎么添加它的消息相应呢,步骤如下
第一:首先在CMainFrame类的CPP文件中添加消息映射,如红色部分所示
BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
// NOTE - the ClassWizard will add andremove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code !
ON_CBN_SELCHANGE(ID_COMBOX1,OnSelChange)//这里添加的是消息映射,
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
第二:在CMainFrame类的.h文件中添加消息处理函数,当然了你也可以先添加这个。如红色所示
//{{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCTlpCreateStruct);
afx_msg void OnSelChange(); //这里是添加映射函数的声明
// NOTE - the ClassWizard will add andremove member functions here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
第三:在回到CMainFrame类的CPP文件文件中添加映射函数的定义,如下面所示
void CMainFrame:: OnSelChange ()
{
MessageBox("你选择了我");
}
好了上面的步骤已经完成,如果你还想添加其他的消息,就按照上面的步骤添加就可以,