VC2005下高階彩色按鈕的實現

2021-04-13 08:27:48 字數 2495 閱讀 1630

vc2005

下高階彩色按鈕的實現

moakap  2007-9-3

所謂高階彩色按鈕,就是按鈕在滑鼠單擊、選中等操作中,呈現不同的顏色,使應用程式更加美觀。

我們首先定義按鈕的幾種狀態,根據需要,又下面幾種狀態: 0.

預設狀態 1.

焦點狀態——滑鼠放置在按鈕上時按鈕的狀態 2.

選中狀態——按鈕被按下時的狀態

要製作高階彩色按鈕,必須對

cbutton

按鈕類進行過載。下面詳細介紹高階彩色按鈕的實現過程: 1、

根據應用需要使用普通按鈕設計程式的介面。 2、

將按鈕的

owner draw

屬性設定為

true。

3、新建

cadvbutton

類,其父類為

cbutton。

4、在cadvbutton

類中新增下列私有成員變數: 1)

int m_state

按鈕的狀態標誌,分別取0,

1,2

2)cpoint m_point

點變數,用來捕捉滑鼠的當前位置 3)

int m_istimeron

定時器標示,指示定時器狀態 5、

設定滑鼠單擊(按鈕被按下)時的操作 利用

mfc classwizard

嚮導為cadvbutton

類新增wm_lbuttondown

訊息的響應函式,在該函式中得到當前滑鼠的位置和按鈕的客戶區域

,當滑鼠位置在按鈕客戶區域是,設定為選中狀態。

void

cadvbutton::onlbuttondown(uint nflags, cpoint point)

cbutton::onlbuttondown(nflags, point);

} 6、

設定鬆開滑鼠左鍵(按鈕彈起)的操作 利用

mfc classwizard

嚮導為cadvbutton

類新增wm_lbuttonup

訊息的響應函式。當滑鼠位置在按鈕客戶區域時,將按鈕狀態設定成焦點狀態。

void

cadvbutton::onlbuttonup(uint nflags, cpoint point)

cbutton::onlbuttonup(nflags, point);

} 7、

設定滑鼠移動過按鈕的操作 利用

mfc classwizard

嚮導為cadvbutton

類新增wm_mousemove

訊息的響應函式。在函式中獲得按鈕的客戶區域和滑鼠當前位置。當滑鼠位置在按鈕客戶區域時,將按鈕狀態設定成焦點狀態。

void

cadvbutton::onmousemove(uint nflags, cpoint point)

cbutton::onmousemove(nflags, point);

} 利用

mfc classwizard

嚮導為cadvbutton

類新增wm_timer

訊息的響應函式。在函式

中檢測滑鼠的當前位位 置,根據當前位置設定按鈕的狀態。

void

cadvbutton::ontimer(uint_ptr nidevent)

} else

killtimer(nidevent);

m_istimeron = false;

}

cbutton::ontimer(nidevent);

} 8、

為cadvbutton

類新增drawitem

函式,在函式中對按鈕客戶區域進行繪製。

void

cadvbutton::drawitem(lpdrawitemstruct lpdrawitemstruct)

char *pcaption = new

char[maxcaption];

int ilen = getwindowtext((lptstr)pcaption,maxcaption);//

得到按鈕標題

pdc->setbkmode(transparent);//

設定背景模式為透明

pdc->settextcolor(textcolor);//

設定按鈕字型顏色

pdc->drawtext((lptstr)pcaption,ilen,&m_clientrect,dt_singleline|dt_center|dt_vcenter);//

繪製標題}

9、在對話方塊中顯示按鈕

在應用程式對話方塊檔案中包含

cadvbutton

類,#include 「cadvbutton.h」

直接將對話方塊中的按鈕變數型別設定成

cadvbutton

型別即可。

我們還可以根據不同功能設定不同顏色系列的按鈕。

VC2005逃跑按鈕實現

1.新建乙個基於對話方塊的mfc應用程式。刪除對話方塊中的預設按鈕。拖過來兩個按鈕。2.新建乙個類,繼承cbutton vc6是使用類嚮導。vc8是開啟類檢視,右擊新增類。3.為兩個按鈕關聯變數 開啟類檢視,右擊 newbtn 類,開啟屬性面板,可以為 newbtn 類新增訊息響應函式。直接在 中為...

關於VC2005的學習感言

這段時間一直都在用vc2005這個工具進行相關的mfc開發。可以說現在還是屬於初學者,還是處於借鑑別人的 然後再整合到自己的程式中,這樣的一種補牆式的開發模式,沒辦法,剛開始嘛!不過現在還是有些心得的 主要是體現在開發的模式上,再者就是開發的思想上 其實現在發現很多的開發流程和思想都是一致的 無論是...

關於VC 2005 不能除錯的問題

前一段時間用vc2005就發現有個程式突然不能除錯了,驚訝至極。然後也不知道什麼原因就又能除錯了。更加驚訝。這一靈異現象是我對vc2005的印象大打折扣。今天vc2005無法除錯的現象再次神奇出現。我重建工程了幾次,也沒見效,要不是光碟機不好使,我都要重灌系統了。就在我快要崩潰的時候,在網上找到了一...