六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

標題欄上添加按鈕

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

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

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

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

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

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

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

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

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

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

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

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

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

// 利用上面的定義創建標題欄上的位圖,寶庫位圖的ID號,鼠標經過時的
file://變換位圖,鼠標選擇時的變換位圖和提示文字。

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


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

  第七步:當我們在標題欄上點擊圖標時,將有一個消息WM_CBLBUTTONCLICKED產生,參數WPARAM是指點擊圖標的ID號。

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

  在mainfrm.cpp中定義函數實現:

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;
}

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

  第八步:標題欄的動態改變。在程序的執行過程中如果你要改變標題欄的樣子你同樣可以實現,下面分別給出如何刪除一個圖標和更改一個圖標的樣子。


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

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


  好了,功能實現了,還算滿意吧,希望對你有用。


主站蜘蛛池模板: 亚洲欧美日韩伦中文 | 一二三四影院网在线观看免费 | 青青草视频播放 | 色婷婷一区二区三区四区成人 | 欧美性群另类大交人妖 | 日韩影片2| 亚洲第一天堂 | 青青草原影院 | 深夜国产一区二区三区在线看 | 五月婷婷在线观看视频 | 亚洲精品播放 | 婷婷久久综合 | 亚洲视频一区二区在线观看 | 青青久久久国产线免观 | 日韩中文字幕在线看 | 色欧美色 | 日韩黄色一级视频 | 欧美一区二区精品系列在线观看 | 欧美香蕉在线 | 特级理论片 | 人九九精品 | 亚洲伊人成人网 | 日本午色www高清视频 | 天天澡夜夜澡人人澡 | 青青青国产成人久久111网站 | 天堂网在线最新版官网 | 日本亚欧乱色视频在线系列 | 色婷婷丁香 | 五月激情丁香网 | 欧美亚洲综合在线观看 | 亚洲性久久久影院 | 青青草视频播放 | 欧美天天 | 日韩精品一区二区三区中文精品 | 揄拍成人国产精品视频 | 亚洲欧美日韩在线不卡 | 日本免费不卡视频一区二区三区 | 日韩专区亚洲国产精品 | 在线亚洲精品国产波多野结衣 | 青娱乐国产在线视频 | 一区二区三区视频免费观看 |