CBitmapButton位图按钮简明教程
1.新建基于對(duì)話框工程,放置一個(gè)按鈕,可以適當(dāng)調(diào)整大小,設(shè)置其Owner?Draw屬性為TRUE,右鍵為按鈕添加變量,改變其變量類型為CBitmapButton,按確定完成;
2.初始化工作,在對(duì)話框的OnInitDialog()函數(shù)里面添加以下代碼: m_btButton.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2,IDB_BITMAP3,IDB_BITMAP4);//載入??
m_btButton.SizeToContent();??//使按鈕適應(yīng)圖片大小??
????SetTimer(1,20,NULL);?
3.為控制位圖按鈕的可用、不可用添加代碼,這是為了驗(yàn)證第四種狀態(tài)的按鈕:
void?CTestDlg::OnBnClickedButton2()??
{
m_btButton.EnableWindow(0);??
}??
void?CTestDlg::OnBnClickedButton3()??
{?????
m_btButton.EnableWindow();??
}
4.步驟五:到這里已經(jīng)完成了位圖按鈕的實(shí)現(xiàn),編譯運(yùn)行可以看到結(jié)果。但是鼠標(biāo)滑過(guò)的時(shí)候,按鈕并不會(huì)感應(yīng)到焦點(diǎn)的存在。這里用定時(shí)器捕獲焦點(diǎn)在按鈕上,并且改變此時(shí)的按鈕狀體為第三種圖片。首先為窗體添加OnTimer()事件,在OnTimer()函數(shù)里面填寫如下代碼:
void?CTestDlg::OnTimer(UINT_PTR?nIDEvent)??
{??
????//?TODO:?在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值?
????if?(1==nIDEvent)??
?????{??
??????POINT?p;??
??????GetCursorPos(&p);?????
??????CWnd?*hwnd;??
??????hwnd=WindowFromPoint(p);???//檢索窗口中包含指定的點(diǎn);點(diǎn)必須指定屏幕坐標(biāo)在屏幕上的一個(gè)點(diǎn)。????
??????CWnd?*hwnd2=GetDlgItem(IDC_BUTTON1);??
??????if?(hwnd2?==?hwnd)?????????//如果鼠標(biāo)在按鈕上?
??????{??
???????if?(GetFocus()!=hwnd2)????????//如果按鈕無(wú)焦點(diǎn),那么設(shè)置焦點(diǎn)?
????????hwnd2->SetFocus()?;??
??????}??
??????else??????????//如果鼠標(biāo)不在按鈕上;?
??????{??
???????if?(GetFocus()?==?hwnd2?)??????????????????//如果按鈕有焦點(diǎn),那么去焦點(diǎn);?
????????GetDlgItem(IDC_BUTTON2)->SetFocus();??//這里的IDC_BUTTON2為你想跳轉(zhuǎn)到的控件ID號(hào)?
??????}?????
?????}??
????CDialog::OnTimer(nIDEvent);??
}??
超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的CBitmapButton位图按钮简明教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于WM_NCHITTEST消息
- 下一篇: CreateProcess创建进程