在對話框(CDialog)程序中,為了讓程序看上去漂亮一些,我們可以為對話框添加一個好看的背景圖片,要想完成這個目標,可以利用afx_msg BOOL**OnEraseBkgnd**(CDC* pDC) 這個函數。
下面結合實例說明(實例可在我的CSDN資源中下載:[http://download.csdn.net/detail/margin1988/8337225](http://download.csdn.net/detail/margin1988/8337225)):
(1)找來一張合適的BMP格式的背景圖片,將其放在工程的res目錄下,然后在程序的資源視圖中,將這張圖片導入進來(假設導入后其ID為:IDB_BITMAP1)。
(2)在對話框的.h文件中添加函數聲明:
~~~
afx_msg BOOL OnEraseBkgnd (CDC* pDC);
~~~
(3)在對話框的.cpp文件中添加其消息映射宏:
~~~
BEGIN_MESSAGE_MAP(CPoint22Dlg, CDialog)
ON_WM_ERASEBKGND()//消息映射宏
END_MESSAGE_MAP()
~~~
(4)在對話框的.cpp文件中實現該函數功能:
~~~
BOOL CPoint22Dlg::OnEraseBkgnd(CDC* pDC) //為對話框添加背景圖片
{
CDialog::OnEraseBkgnd(pDC);
CBitmap m_bitmap;
m_bitmap.LoadBitmap (IDB_BITMAP1);
if (!m_bitmap.m_hObject)
return true;
CRect rect;
GetClientRect(&rect);
CDC dc;
dc.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dc.SelectObject(&m_bitmap);
int bmw, bmh ;
BITMAP bmap;
m_bitmap.GetBitmap(&bmap);
bmw = bmap.bmWidth;
bmh = bmap.bmHeight;
int xo=0, yo=0;
/*函數從源矩形中復制一個位圖到目標矩形,必要時按目前目標設備設置的模式進行圖像的拉伸或壓縮。*/
pDC->StretchBlt(xo, yo, rect.Width(),rect.Height(), &dc,0, 0,bmw,bmh, SRCCOPY);
dc.SelectObject(pOldBitmap);
return true;
}
~~~
- 前言
- VC++中自定義熱鍵及響應
- CFileDialog文件對話框
- VC++中客戶區保存為BMP圖片
- VC++讀、寫注冊表
- VC++播放音頻文件和音頻數據的方法
- VC++調用Matlab編寫的DLL(混合編程)
- VC++中文件讀、寫和其他相關操作匯總
- VC++獲取系統當前時間
- VC++按鈕控件字體設置
- VC++軟件界面風格簡單美化
- VC++中一些常用的數據類型之間的相互轉化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及隨機相關
- VC++中結構體的定義及使用
- VC++中List Control控件的使用方法介紹
- VC++中窗口過程函數及其消息發送、響應機制介紹
- VC++中Ribbon編程架構及SDI架構多視圖切換介紹
- 串口通信基礎知識及VC++實現
- VC++中單個鍵盤按鍵的響應
- VC++中的計時器及多媒體高精度計時器
- VC++編寫DLL導出函數及其調用方法
- VC++對話框(CDialog)的全屏顯示及控件居中顯示
- VC++對話框(CDialog)添加背景圖片
- VC++圖片控件(Picture Control)顯示資源位圖(BMP)、文件位圖(BMP)、其它格式文件圖片(JPG\PNG\BMP)的方法
- VC++對Access數據庫的操作(查詢、插入、更新、刪除等)