日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

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

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

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

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

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

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

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

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

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

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

//初識化,m_hWnd是我們要處理的窗口句柄
cbExtra.Init(m_hWnd);
// // 設(shè)置標(biāo)題欄上的原來的按鈕(最大化、最小化和關(guān)閉)保留的數(shù)目
cbExtra.SetNumOfDefaultCaptions(3);
// 設(shè)置位圖的透明顏色
COLORREF crTransparent = RGB(255,0,255);
cbExtra.SetTransparentColor(crTransparent);
// 鼠標(biāo)選中一個位圖后該位圖的樣子
cbExtra.SetSelectionBitmap((HBITMAP)LoadImage(AfxGetInstanceHandle(),
   MAKEINTRESOURCE(IDB_BITMAP7),
   IMAGE_BITMAP,
   0,
   0,
   LR_LOADMAP3DCOLORS|LR_DEFAULTCOLOR));
// 鼠標(biāo)移動到一個位圖后,該位圖的變化
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)題欄上的位圖,寶庫位圖的ID號,鼠標(biāo)經(jīng)過時的
file://變換位圖,鼠標(biāo)選擇時的變換位圖和提示文字。

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


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

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

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

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

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

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

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


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

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


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

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 三级做爰视频三级小说 | 最新97超级碰碰碰碰久久久久 | 日本黄页视频 | 国产三级日本三级在线播放 | 青青久久国产成人免费网站 | 国产成人www免费人成看片 | 亚洲成年www| 国产在线播放不卡 | 国产精品免费观看视频播放 | 一级毛片真人不卡免费播 | 国产免费一区二区 | 五月婷婷丁香在线视频 | 久久久久久久网 | 久久久久久久久毛片精品 | 丁香激情六月 | 日本一区二区三区免费高清在线 | 天天看天天射天天碰 | 九九久久久| 久久99热不卡精品免费观看 | 99re免费视频精品全部 | 国产成人久久久精品毛片 | 亚洲天堂视频在线播放 | 高颜值大长腿美女啪啪 | 欧美人交 | 91夜夜人人揉人人捏人人添 | 又黄又爽又色的视频在线看 | 精品国产一区二区三区免费看 | porn在线精品视频 | 日韩精品一区二区三区视频网 | 国产精品极品美女自在线观看免费 | 国产精品99久久 | 正在播放日韩 | 国产精品久久久久精 | 高清欧美一区二区免费影视 | 一级不卡毛片免费 | 亚洲国产精品久久网午夜 | 国产视频91在线 | 久久青草免费91线频观看站街 | 狼狼色丁香久久女婷婷综合 | 最新国产福利片在线观看 | 波多野结衣免费视频观看 |