当前位置:硬件测评 > vs2010菜单栏显示为方框_VC2010 对话框显示菜单栏并响应

vs2010菜单栏显示为方框_VC2010 对话框显示菜单栏并响应

  • 发布:2023-09-16 11:28

1. 添加资源,新加一个ToolBar的资源 IDR_TOOLBAR_SEARCH,并在此工具栏上再加上一个项:取ID为:ID_SEARCH2. 在MainFrm类中加入如下代码:变量:

CMFCToolBar m_wndToolBarSearch;

方法:

CMFCToolBarComboBoxButton *m_comboButton;

afx_msg LRESULT OnToolbarReset(WPARAM,LPARAM);

afx_msg void OnSelChangeClick();

afx_msg void OnClickComboBox();

3. 在MainFrm的消息映射中加入如下代码:

ON_REGISTERED_MESSAGE(AFX_WM_RESETTOOLBAR, OnToolbarReset)

ON_COMMAND(ID_SEARCH, &CMainFrame::OnClickComboBox)

ON_CBN_SELCHANGE(ID_SEARCH,&CMainFrame::OnSelChangeClick)

4. 在MainFrm的构造函数中修改如下:

CMainFrame::CMainFrame() : m_comboButton( NULL )

5. 在MainFrm的析构函数中加入:

if ( NULL != m_comboButton )

{

delete m_comboButton;

m_comboButton = NULL;

}

else ;

6. 添加消息响应函数的实现

LRESULT CMainFrame::OnToolbarReset(WPARAM wp,LPARAM lp)

{

if ( NULL == m_comboButton )

{

m_comboButton = new CMFCToolBarComboBoxButton(ID_SEARCH, GetCmdMgr ()->GetCmdImage(ID_SEARCH, FALSE), CBS_DROPDOWN);

}

else ;

m_comboButton->EnableWindow(TRUE);

m_comboButton->SetCenterVert();

m_comboButton->SetDropDownHeight(10);

m_comboButton->SetFlatMode();

m_comboButton->AddItem(_T("OPTION1"));

m_comboButton->AddItem(_T("OPTION2"));

m_comboButton->SelectItem(0);

m_wndToolBarSearch.ReplaceButton (ID_SEARCH, *m_comboButton);

return 0;

}

void CMainFrame::OnSelChangeClick()

{

MessageBox( _T("OnSelChangeClick.") );

}

void CMainFrame::OnClickComboBox()

{

CMFCToolBarComboBoxButton* pSrcCombo = CMFCToolBarComboBoxButton::GetByCmd (ID_SEARCH, TRUE);

int index = m_comboButton->GetCurSel();

index = pSrcCombo->GetCurSel();

CString str;

pSrcCombo->GetEditCtrl()->GetWindowText( str );

pSrcCombo->AddItem(str);

MessageBox( _T("OnClickComboBox: ") + str );

}

7. 在MainFrm的OnCreate中的适当地方添加创建的代码:

if (!m_wndToolBarSearch.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC, CRect(1, 1, 1, 1), IDR_TOOLBAR_SEARCH) ||

!m_wndToolBarSearch.LoadToolBar(theApp.m_bHiColorIcons ? IDR_TOOLBAR_SEARCH : IDR_TOOLBAR_SEARCH))

{

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

return -1; // 未能创建

}

//

m_wndToolBarSearch.SetWindowText( _T("Search") );

//

m_wndToolBarSearch.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);

//

m_wndToolBarSearch.EnableDocking(CBRS_ALIGN_ANY);

//

DockPane(&m_wndToolBarSearch);

转载于:https://www.sychzs.cn/junx1989/archive/2012/07/24/junx1989_20120724102359.html

今天来简单介绍下vs2010旗舰版中解决方案边框栏的结构,并且拿一个实际的MFC的例子来展示下。

1. Solution Explorer

显示项目中包含的文件。这些文件分布在Header Files,Resource Files,Source Files三个虚拟文件夹中,当然还有一个ReadMe.txt。为何称之为虚拟文件夹呢,是因为他们在我们的磁盘空间是不存在的,只是为了方便程序猿们查看的。这三个文件夹从字面上都可以理解了,分别是头文件,资源文件,源文件。

2. Class View

Class View显示项目中包括的类和这些类的成员,还显示任何已经定义的全局实体。类显示在上面的窗格中,下面的窗格显示在上面的窗格中选中的类的成员。在Class View中右击某个实体,可以显示出用来查看该实体的定义或引用位置的菜单。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

左边的图显示了包括的类,右边的是我展开了CAboutDlg类,可以清楚的看出他是继承自CDialogEx,而CDialogEx继承自CDialog。

3. Property Manager

显示可以为项目构建的版本,有两个选项:Debug和Release。有项目开发经验的人肯定都知道,Debug是调试版本,Release是发布版本。发布版本的执行文件较调试版本小,因为他当中去掉了很多的调试信息。

1. 新建项目,在resourceview视图添加新的菜单(右键)

?

?

2. 在下图Type Here处添加菜单内容。

注意,当定义了二级及以后菜单后,一级菜单就不能再更改ID了,也不再有响应函数;

注意菜单资源的名称 IDR_MENU1,之后会用到。

?

3. 添加完菜单后,单击子菜单项,在properties中修改各子菜单项的ID:

?

4. 在主对话框.h文件中,添加菜单变量;在.cpp文件的OnIniDialog()函数中导入菜单资源:

CMenu m_Menu;

m_Menu.LoadMenu(IDR_MENU1);

SetMenu(&m_Menu);

?

还有一种显示方法如下:

先增成员变量HMENU m_hMenu1; 然后在初始化函数OnInitDialog()添加一下代码: ?m_hMenu1=LoadMenu(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MENU1));//导入资源,创建

菜单 ?::SetMenu(this->GetSafeHwnd(),m_hMenu1);//添加到对话框

5. 在Class Wizard中为各子菜单添加相应消息函数:

注意:类一定要选主对话框类。

?

6. 在消息响应函数内,添加相应程序:

参考:http://www.sychzs.cn/phenixyf/article/details/42680473

????????? http://www.sychzs.cn/phenixyf/article/details/42713045

?

相关文章