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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VC制作类似于IE4的酷工具条

發布時間:2025/3/15 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC制作类似于IE4的酷工具条 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用VC制作工具條的方法很多,本文提供一種制作類似于IE4.0的工具條。能實現鼠標移上圖標時,圖標變為彩色,在工具條的位置,能停擺幾種工具條。具體原理解釋見步驟過程。
步驟如下:
1.????運行AppWizard,選擇Single Document,其余選缺省設置。
2.????點擊Insert Resource ,加入兩條Bitmap,定義為:IDB_COLDTOOLBAR和IDB_HOTTOOLBAR
3.????在CMainFrame中加入成員變量:
????CReBar? ? ? m_wndReBar;????????????
????CComboBoxEx m_wndAddress;
4.????修改CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函數如下:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
????CImageList img;
????CString str;

????if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
????????return -1;
????
????if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
????????| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) )
????{
????????TRACE0("Failed to create toolbar ");
????????return -1;? ? ? // fail to create
????}

????if (!m_wndStatusBar.Create(this) ||
????????!m_wndStatusBar.SetIndicators(indicators,
????????? sizeof(indicators)/sizeof(UINT)))
????{
????????TRACE0("Failed to create status bar ");
????????return -1;? ? ? // fail to create
????}

m_wndToolBar.GetToolBarCtrl().SetButtonWidth(50, 150);? ? //設置工具條按鈕大小
m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);

//創建鼠標移上時的圖標列表
????img.Create(IDB_HOTTOOLBAR, 22, 0, RGB(255, 0, 255));????????m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
????img.Detach();
//創建無焦點的圖標列表
????img.Create(IDB_COLDTOOLBAR, 22, 0, RGB(255, 0, 255));
????m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
????img.Detach();
????m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT);
//設置要顯示的圖標數,可根據實際情況修改
????m_wndToolBar.SetButtons(NULL, 9);

????//逐個設置圖標按鈕的屬性
/*SetButtonInfo(( int nIndex, UINT nID, UINT nStyle, int iImage ); 參數如下:
? nIndex :? 圖標按鈕的索引值
? nID:????????圖標按鈕關聯的資源號
? nStyle:? ? 圖標按鈕的風格
????????????????常用的幾種如下:
????????????TBBS_BUTTON? 標準按鈕
TBBS_SEPARATOR? 分隔符
TBSTYLE_DROPDOWN? 帶有下箭頭的按鈕
? iImage:? ? 關聯建立的ImageList中圖形的索引值
*/
?
????m_wndToolBar.SetButtonInfo(0, ID_FILE_NEW, TBSTYLE_BUTTON, 0);
????m_wndToolBar.SetButtonText(0, "回退");
????m_wndToolBar.SetButtonInfo(1, ID_FILE_OPEN, TBSTYLE_BUTTON , 1);
????m_wndToolBar.SetButtonText(1, "前進");
????m_wndToolBar.SetButtonInfo(2, ID_FILE_SAVE, TBSTYLE_BUTTON|TBBS_SEPARATOR? , 2);
????m_wndToolBar.SetButtonText(2, "停止");
????m_wndToolBar.SetButtonInfo(3, ID_FILE_PRINT_SETUP, TBSTYLE_BUTTON | TBSTYLE_DROPDOWN, 3);
????m_wndToolBar.SetButtonText(3, "打印設置");

????CRect rectToolBar;

????// 設置工具條大小
????m_wndToolBar.GetItemRect(0, &rectToolBar);
????m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(30,20));

????// 創建
????if (!m_wndAddress.Create(CBS_DROPDOWN | WS_CHILD, CRect(0, 0, 200, 120), this, AFX_IDW_TOOLBAR + 1))
????{
????????TRACE0("Failed to create combobox ");
????????return -1;? ? ? // fail to create
????}

????COMBOBOXEXITEM item;

????item.mask = CBEIF_TEXT;
????item.iItem = -1;
????item.pszText = "健松思想";
????m_wndAddress.InsertItem(&item);

????if (!m_wndReBar.Create(this))
????{
????????TRACE0("Failed to create rebar ");
????????return -1;? ? ? // fail to create
????}

????// 將工具條和生成的輸入框加入CReBar對象,集中顯示在工具條區域
????m_wndReBar.AddBar(&m_wndToolBar);
????m_wndReBar.AddBar(&m_wndAddress, "地址", NULL, RBBS_FIXEDBMP | RBBS_BREAK);

????return 0;
}

????到此,運行程序,已經可以看到一個類似IE4.0的程序出來了。但是下拉式圖標按鈕并沒有顯示出下拉菜單,也沒有對輸入框進行消息響應。繼續修改程序如下:

5.????制作菜單IDR_PRINT_POPUP
6.????在MainFrame.h加入
????afx_msg void OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult);
在MainFrame.cpp中的MESSAGE_MAP加入消息映射
????ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnDropDown)
和處理函數體:
void CMainFrame::OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult)
{
????// this function handles the dropdown menus from the toolbar
????NMTOOLBAR* pNMToolBar = (NMTOOLBAR*)pNotifyStruct;
????CRect rect;

????// translate the current toolbar item rectangle into screen coordinates
????// so that we'll know where to pop up the menu
????m_wndToolBar.GetToolBarCtrl().GetRect(pNMToolBar->iItem, &rect);
????rect.top = rect.bottom;
????::ClientToScreen(pNMToolBar->hdr.hwndFrom, &rect.TopLeft());
????if(pNMToolBar->iItem == ID_FILE_PRINT_SETUP)
????{
????????CMenu menu;
????????CMenu* pPopup;

????????// the font popup is stored in a resource
????????menu.LoadMenu(IDR_PRINT_POPUP);
????????pPopup = menu.GetSubMenu(0);
????????pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, rect.left, rect.top + 1, AfxGetMainWnd());
????}
????*pResult = TBDDRET_DEFAULT;
}

7.????處理對Combox的響應,這里只對內容改變的消息進行處理,若要添加別的處理,參看Combo Box Handlers的消息映射。
在MainFrame.h中加入????afx_msg void OnNewAddress();
在MainFrame.cpp中的MESSAGE_MAP中加入消息映射
????ON_CBN_SELENDOK(AFX_IDW_TOOLBAR + 1,OnNewAddress)
同時加入函數體
void CMainFrame::OnNewAddress()
{
????CString str;
????ShellExecute(NULL,"OPEN" ,"http://jonson.126.com",NULL,NULL,SW_SHOW);
}

總結

以上是生活随笔為你收集整理的VC制作类似于IE4的酷工具条的全部內容,希望文章能夠幫你解決所遇到的問題。

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