• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

        標(biāo)題欄上添加按鈕

        標(biāo)題欄上添加按鈕

        更新時(shí)間:2022-05-05 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

        自從Windows操作系統(tǒng)出現(xiàn)以后,在應(yīng)用程序中進(jìn)行人機(jī)交互的思想和手段便發(fā)生了根本性的改變,計(jì)算機(jī)的界面變得友好精彩。一個(gè)程序的好壞很大程度上決定于人機(jī)交互的方便程度。當(dāng)前,大多數(shù)程序的標(biāo)題欄都千篇一律,如何讓自己的程序與眾不同是每個(gè)程序員的夢(mèng)想,但改變標(biāo)題欄的內(nèi)容的確有相當(dāng)?shù)碾y度。該篇文章向你介紹如何在標(biāo)題欄上添加圖標(biāo)按鈕,而且當(dāng)鼠標(biāo)經(jīng)過(guò)和點(diǎn)擊該圖標(biāo)時(shí),鼠標(biāo)將有不同的反應(yīng)。請(qǐng)按照下面的步驟實(shí)現(xiàn)。

          第一步:打開VC編程環(huán)境,生成一個(gè)新的基于單文檔的工程temp,所有的選項(xiàng)都取默認(rèn)值,下面,我們就在此工程的標(biāo)題欄上生成三個(gè)按鈕圖標(biāo)。

          第二步:下載資源文件,共有三個(gè)文件:CaptionButton.cpp、CaptionButton.h和Thunk.h。將這三個(gè)文件添加到工程中(添加方法不必細(xì)說(shuō)了吧)。

          第三步:在Mainfrm.h中定義變量CCaptionButton cbExtra;,當(dāng)然要包含頭文件#include "CaptionButton.h"。

          第四步:為工程加載位圖資源,ID號(hào)分別為IDB_BITMAP1、IDB_BITMAP2、IDB_BITMAP3、IDB_BITMAP6、IDB_BITMAP7。這些位圖將顯示在標(biāo)題欄上,至于用什么樣的位圖就看你的喜好了。

          第五步:在Mainfrm.cpp的OnCreate函數(shù)中添加如下的代碼:

        //初識(shí)化,m_hWnd是我們要處理的窗口句柄
        cbExtra.Init(m_hWnd);
        // // 設(shè)置標(biāo)題欄上的原來(lái)的按鈕(最大化、最小化和關(guān)閉)保留的數(shù)目
        cbExtra.SetNumOfDefaultCaptions(3);
        // 設(shè)置位圖的透明顏色
        COLORREF crTransparent = RGB(255,0,255);
        cbExtra.SetTransparentColor(crTransparent);
        // 鼠標(biāo)選中一個(gè)位圖后該位圖的樣子
        cbExtra.SetSelectionBitmap((HBITMAP)LoadImage(AfxGetInstanceHandle(),
           MAKEINTRESOURCE(IDB_BITMAP7),
           IMAGE_BITMAP,
           0,
           0,
           LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR));
        // 鼠標(biāo)移動(dòng)到一個(gè)位圖后,該位圖的變化
        HBITMAP hMouseOverBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),
           MAKEINTRESOURCE(IDB_BITMAP2),
           IMAGE_BITMAP,
           0,
           0,
           LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR);

        // 設(shè)置位圖1
        HBITMAP hCaptionAMBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),
           MAKEINTRESOURCE(IDB_BITMAP3),
           IMAGE_BITMAP,
           0,
           0,
           LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR);

        HBITMAP hCaptionAMBitmapHilite =
           CCaptionButton::CombineBitmaps(hCaptionAMBitmap,
           hMouseOverBitmap, crTransparent);

        // 設(shè)置位圖2
        HBITMAP hCaption2Bitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),
           MAKEINTRESOURCE(IDB_BITMAP6),
           IMAGE_BITMAP,
           0,
           0,
           LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR);

        HBITMAP hCaption2BitmapHilite =
           CCaptionButton::CombineBitmaps(hCaption2Bitmap,
           hMouseOverBitmap,crTransparent);

        // 設(shè)置位圖三
        HBITMAP hCaption3Bitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(),
           MAKEINTRESOURCE(IDB_BITMAP1),
           IMAGE_BITMAP,
           0,
           0,
           LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR);

        HBITMAP hCaption3BitmapHilite =
           CCaptionButton::CombineBitmaps(hCaption3Bitmap,
           hMouseOverBitmap,crTransparent);

        // 利用上面的定義創(chuàng)建標(biāo)題欄上的位圖,寶庫(kù)位圖的ID號(hào),鼠標(biāo)經(jīng)過(guò)時(shí)的
        file://變換位圖,鼠標(biāo)選擇時(shí)的變換位圖和提示文字。

        cbExtra.New(1,hCaptionAMBitmapHilite,hCaptionAMBitmap,"guan");
        cbExtra.New(2,hCaption2BitmapHilite,hCaption2Bitmap,"xi");
        cbExtra.New(3,hCaption3BitmapHilite,hCaption3Bitmap,"ming");


          第六步:現(xiàn)在我們可以先停下來(lái)看看我們的成果如何。編譯我們的工程,運(yùn)行,我們可以發(fā)現(xiàn),我們的標(biāo)題欄上增加了三個(gè)按鈕,鼠標(biāo)在上面移動(dòng)或點(diǎn)擊的時(shí)候,位圖會(huì)發(fā)生變化。只是我們還沒有添加在位圖上點(diǎn)擊是的處理函數(shù),不要急,接下來(lái)我們就添加相應(yīng)的處理函數(shù)。

          第七步:當(dāng)我們?cè)跇?biāo)題欄上點(diǎn)擊圖標(biāo)時(shí),將有一個(gè)消息WM_CBLBUTTONCLICKED產(chǎn)生,參數(shù)WPARAM是指點(diǎn)擊圖標(biāo)的ID號(hào)。

          在mainfrm.h中定義消息映射函數(shù)afx_msg LRESULT Hit(WPARAM wParam, LPARAM lParam);

          在mainfrm.cpp中定義函數(shù)實(shí)現(xiàn):

        ON_MESSAGE(WM_CBLBUTTONCLICKED, Hit)
        LRESULT CMainFrame::Hit(WPARAM wParam, LPARAM lParam)
        {
        switch(wParam)
        {// begin wParam
        case 1:
        AfxMessageBox("第一個(gè)CAPtion");
        break;
        case 2:
        AfxMessageBox("第二個(gè)Caption");
        break;
        case 3:
        AfxMessageBox("第三個(gè)Caption");
        break;
        }
        return 1;
        }

          這樣,當(dāng)我們單擊圖標(biāo)時(shí)將彈出不同的提示對(duì)話框,這只是一個(gè)例子,至于實(shí)現(xiàn)什么樣的功能隨你的便了。

          第八步:標(biāo)題欄的動(dòng)態(tài)改變。在程序的執(zhí)行過(guò)程中如果你要改變標(biāo)題欄的樣子你同樣可以實(shí)現(xiàn),下面分別給出如何刪除一個(gè)圖標(biāo)和更改一個(gè)圖標(biāo)的樣子。


        void CMainFrame::OnDelete()
        {
        cbExtra.Delete(1);
        }

        void CMainFrame::OnChange()
        {
        cbExtra.Replace(1,
        1,
        hCaption4BitmapHilite,
        hCaption4Bitmap,
        "pNewToolTipText");
        }


          好了,功能實(shí)現(xiàn)了,還算滿意吧,希望對(duì)你有用。

        溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 久久免费视频99| 一级特黄色毛片免费看| 国产精品免费观看调教网| 亚洲精品动漫人成3d在线| 日韩亚洲变态另类中文| 亚洲精品视频观看| 99热免费在线观看| 日本免费电影一区| 亚洲日本中文字幕| 最近中文字幕无免费| 亚洲一卡二卡三卡四卡无卡麻豆| 亚洲一区在线免费观看| 亚洲fuli在线观看| 欧洲精品免费一区二区三区 | 国产精品麻豆免费版| 国产亚洲精彩视频| 亚洲中文字幕无码不卡电影| 色www永久免费| 亚洲精品日韩专区silk| 成年女人毛片免费播放视频m| 日本亚洲欧美色视频在线播放| 91香蕉在线观看免费高清| 亚洲精品人成电影网| 午夜免费不卡毛片完整版| 午夜在线亚洲男人午在线| 自拍偷自拍亚洲精品被多人伦好爽| 光棍天堂免费手机观看在线观看| 亚洲国产精久久久久久久| A在线观看免费网站大全| 日本永久免费a∨在线视频| 成人午夜18免费看| 一级日本高清视频免费观看| 亚洲最新视频在线观看| 免费精品一区二区三区在线观看| 青青免费在线视频| 亚洲综合网美国十次| 国产一级一片免费播放i| 国产精品亚洲专区无码牛牛| 无码一区二区三区免费视频 | 精品福利一区二区三区免费视频| 亚洲精品动漫免费二区|