MFC學習 「逃跑」按鈕的實現

2021-07-11 09:50:12 字數 1683 閱讀 2991

如何設計對話方塊程式上的「逃跑」按鈕,即每當滑鼠移動到btn上面的時候就會自動跑到另外乙個地方,看上去滑鼠好像永遠無法點中?

討巧:設定滑鼠wm_mousemove的響應函式用於捕獲滑鼠移動操作,每當滑鼠移動到btn上就修改屬性隱藏,同時修改另乙個btn的屬性為顯示,造成btn自動「逃跑」的假象。

步驟:1、建立基於對話方塊的應用程式

新建-mfc專案-選擇「基於對話方塊」就可以了,然後就會得到含有「ok」和「cancel」預設按鈕的對話方塊,刪掉預設按鈕,然後從右側彈出的工具欄中拖動button控制項放置到對話方塊中,設定caption;如果想修改字型則要選中對話方塊整體,在屬性最下面有font選項,設計完成之後直接複製控制項得到idc_button2,如圖:

2、為控制項新增類cbtn,繫結變數

利用類嚮導新增cbutton的派生類的cbtn如下圖

分別右鍵兩個按鈕,為按鈕增加cbtn型別的變數如圖:

隨後為兩個空間分別繫結變數m_btn_1和m_btn_2,型別均為cbtn

3、設定按鈕初始化,新增wm_mousemove響應**

為了實現滑鼠移動到某個按鈕上時,自動實現自身的隱藏,同時顯示另乙個控制項,在類cbtn中新增乙個成員變數cbtn* m_pbtn用來儲存另乙個控制項的位址,這樣在乙個控制項的響應過程中就可以操控另乙個控制項。這裡需要注意的是,只能為類新增訊息響應函式,因此m_pbtn應該設定為類cbtn的成員。

在對話方塊物件建立完畢要進行顯示時,可以在crunb***lg類的oninitdialog函式中新增初始化**:

// todo: add extra initialization here

m_btn_1.m_pbtn = &m_btn_2;

m_btn_2.m_pbtn = &m_btn_1;

新增cbtn的wm_mousemove訊息響應函式:

// cbtn message handlers

void cbtn::onmousemove(uint nflags, cpoint point)

4、執行測試

初始介面顯示兩個按鈕,需要設定乙個為隱藏,在按鈕的屬性頁面設定visible為false即可

最終結果:

總結:

逃跑按鈕的實現

首先要捕獲滑鼠移動訊息,那有哪個類來捕獲訊息呢?如果是對話方塊來捕獲的話,我們只要在對話方塊上移動,就會上下移動,不符合,所以滑鼠移動訊息應該有按鈕視窗來捕獲,可以建立乙個從cbutton類派生的新類,然後將按鈕控制項與這種新型別的成員變數相關聯,從而就把按鈕控制項與乙個自定義的按鈕視窗關聯起來。新...

VC學習例項 逃跑按鈕

vc學習例項 逃跑按鈕 skyseraph nov.4sh 2010 hqu email zgzhaobo gmail.com qq 452728574 latest modified date nov.9sh 2010 hqu 前期 對話方塊 新建cbutton類cnewbutton,用來捕獲滑鼠...

VC2005逃跑按鈕實現

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