MFC VS2012对话框背景填图
這是使用VS 2012編寫MFC對話框程序的教程,主要是關(guān)于圖片處理方面的操作,這些在MFC游戲、圖片處理、軟件編寫中是經(jīng)常要用到的知識。
一.創(chuàng)建項(xiàng)目
 文件-新建項(xiàng)目-MFC應(yīng)用程序-該頁面使用“基于對話框”-完成即可。
注意:取消“使用Unicode庫”,否則在使用AfxMessageBox會報錯,沒有一個可以轉(zhuǎn)換的參數(shù)類型,要加AfxMessageBox(_T(“..”))。
 運(yùn)行結(jié)果:
二.添加背景Bitmap資源
 在“資源視圖”中右鍵鼠標(biāo)Dialog處,選擇“添加資源”。
在“添加資源”對話框中選擇Bitmap,點(diǎn)擊“導(dǎo)入”,選擇工程文件res文件夾中的背景圖片,它會添加一張IDB_BITMAP1的圖片。
注意:在添加的圖片中最好使用的是24位的BMP格式圖片,圖片應(yīng)該放入res文件夾中。
三.編寫代碼
 找到XXXDlg.cpp文件夾下的void CXXXDlg::OnPaint()函數(shù),在else中進(jìn)行修改。
 1.首先注釋掉CDialog::OnPaint()函數(shù)
 CDialog是個對話框類,OnPaint()是成員函數(shù),是對窗口進(jìn)行重畫,注釋掉該語句否則會調(diào)用該語句不斷重畫,而不會執(zhí)行下面添加的代碼。注釋掉該語句后最小化對話框后發(fā)現(xiàn)控件不可見,不過移動鼠標(biāo)后又能看見。
 2.添加代碼
else {
//注釋該語句:防止重復(fù)調(diào)用重畫函數(shù)
//CDialog::OnPaint();?
//添加代碼對話框背景貼圖
CPaintDC?? dc(this);??
 CRect?? rect;??
 GetClientRect(&rect);??? //獲取對話框長寬??????
CDC?? dcBmp;????????????  //定義并創(chuàng)建一個內(nèi)存設(shè)備環(huán)境
dcBmp.CreateCompatibleDC(&dc);???????????? //創(chuàng)建兼容性DC
CBitmap?? bmpBackground;???
bmpBackground.LoadBitmap(IDB_BITMAP1);????//載入資源中圖片
BITMAP?? m_bitmap;???????????????????????? //圖片變量???????????????
bmpBackground.GetBitmap(&m_bitmap);???????//將圖片載入位圖中
//將位圖選入臨時內(nèi)存設(shè)備環(huán)境
CBitmap??*pbmpOld=dcBmp.SelectObject(&bmpBackground);
//調(diào)用函數(shù)顯示圖片StretchBlt顯示形狀可變
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcBmp,0,0,m_bitmap.bmWidth,m_bitmap.bmHeight,SRCCOPY);????
 }
四.運(yùn)行結(jié)果
 運(yùn)行結(jié)果如下圖所示:
由于我是剛學(xué)習(xí)VS2012編寫MFC程序,在處理顯示圖片中遇到了很多問題,也參考了很多很多CSDN大神的博客,希望這篇博客能幫助大家。~~初學(xué)者學(xué)習(xí),高手忽略。
 其中主要感謝y30369的CSDN一篇使用VC++ MFC的博客,詳細(xì)網(wǎng)址如下:
?http://blog.csdn.net/y30369/article/details/6467468
 我很大程度上只是轉(zhuǎn)載了它的內(nèi)容,自己在通過VS2012實(shí)現(xiàn)該功能的。(Eastmount 2013-5-31-夜12點(diǎn))
總結(jié)
以上是生活随笔為你收集整理的MFC VS2012对话框背景填图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 汇编中断知识之INT 1CH
- 下一篇: MFC Edit控件 error:“DD
