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