日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CMFCToolBar插入组合框

發布時間:2023/12/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CMFCToolBar插入组合框 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

剛在CSDN博客上面看到一篇文章,講解VS2008中的新類CMFCToolBar的使用, 其中有個關于插入組合框的部分居然要修改MFC的源代碼, ?文章鏈接?http://blog.csdn.net/chenjelly/article/details/6718478??


這里貼出正確的插入方法:


1.?MainFrm.h, 聲明變量

CMFCToolBarComboBoxButton *m_comboAddress;

2.?MainFrm.cpp, 在OnCreate函數中創建工具條并且插入一個組合框

if (!m_wndToolBar.CreateEx (this, TBSTYLE_FLAT,CBRS_SIZE_FIXED | AFX_DEFAULT_TOOLBAR_STYLE) ||!m_wndToolBar.LoadToolBar (IDR_MAINFRAME, uiToolbarColdID, uiMenuID, FALSE /* Not locked */, uiToolbarDisID, 0, uiToolbarHotID, uiToolbarPresID)){TRACE0("Failed to create toolbar\n");return -1; // fail to create}//插入組合框m_wndToolBar.InsertButton (CMFCToolBarComboBoxButton(ID_GO_ADDRESS_EDIT, 0), 3);//設置組合框屬性m_comboAddress = (CMFCToolBarComboBoxButton*)m_wndToolBar.GetButton(3);m_comboAddress->EnableWindow(TRUE);m_comboAddress->SetCenterVert();m_comboAddress->SetDropDownHeight(100);//設置下拉列表的高度m_comboAddress->SetFlatMode();//添加內容m_comboAddress->AddItem(_T("once"));m_comboAddress->AddItem(_T("if only"));m_comboAddress->AddItem(_T("P.S.I Love You"));m_comboAddress->AddItem(_T("Love Me If You Dare"));m_comboAddress->SelectItem(0); //默認選中DockPane (&m_wndToolBar);

另外的就是網上找的一篇文章了


VC2008在CMFCToolBar工具欄中加入組合框

如何在CMFCToolBar工具欄中加入組合框等控件,且先看在線MSDN上怎么說的:

To add a combo box button to a toolbar, follow these steps:

1. Reserve a dummy resource ID for the button in the parent toolbar resource.

2. Construct a?CMFCToolBarComboBoxButton?object.

3. In the message handler that processes the?AFX_WM_RESETTOOLBAR?message, replace the dummy button with the new combo box button by using?CMFCToolBar::ReplaceButton.

具體過程如下:

1.在工具欄資源編輯器中加入id為IDR_COM的空白工具欄,

2.在頭文件中定義組合框

CMFCToolBarComboBoxButton* m_ComboButton;?

3.BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)中添加消息響應

??? ON_REGISTERED_MESSAGE(AFX_WM_RESETTOOLBAR, OnToolbarReset)

在頭文件中聲明消息函數:

?????afx_msg LRESULT OnToolbarReset(WPARAM,LPARAM);

在CMainFram中定義處理函數:

LRESULT CMainFrame::OnToolbarReset(WPARAM wp,LPARAM lp)
{??????
???? m_ComboButton = new CMFCToolBarComboBoxButton(IDR_COM,GetCmdMgr ()->GetCmdImage (IDR_COM, FALSE));

???? m_ComboButton->EnableWindow(true);
???? m_ComboButton->SetCenterVert();
???? m_ComboButton->SetDropDownHeight(25);
???? m_ComboButton->SetFlatMode();
???? m_ComboButton->AddItem(_T("OPTION1"));
???? m_ComboButton->AddItem(_T("OPTION2"));
???? m_ComboButton->SelectItem(0);?
???? m_wndToolBar.ReplaceButton (IDR_COM, *m_ComboButton);
?return 0;
}

2、添加組合框的事件消息響應函數

消息映射:

ON_COMMAND(IDR_COM, &CMainFrame::OnClickComboBox)
?ON_CBN_SELCHANGE(IDR_COM,&CMainFrame::OnSelChangeClick)//別忘了在TOOLBAR中添加IDR_COM資源。

消息聲明:

afx_msg void OnSelChangeClick();
?afx_msg void OnClickComboBox();

消息處理函數:

void CMainFrame::OnSelChangeClick()
{
?CMFCToolBarComboBoxButton* pSrcCombo = CMFCToolBarComboBoxButton::GetByCmd (IDR_COM, TRUE);
?int index = m_ComboButton->GetCurSel();
?index = pSrcCombo->GetCurSel();
?CString str = pSrcCombo->GetItem(index);
}

void CMainFrame::OnClickComboBox()
{

}

(注意:一定要GetByCmd;OnClickComboBox沒有做任何處理,但是如果去掉的話,組合框將編程灰色,無法使用)。

注:更新工具欄:

1.工具欄的右側向下的小箭頭->添加或刪除按鈕->標準->重置工具欄

2.運行regedit打開注冊表->HKEY_CURRENT_USER->Software->工程名,找到工程名將其從注冊表中刪之。









總結

以上是生活随笔為你收集整理的CMFCToolBar插入组合框的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。