閱讀492 返回首頁    go 阿裏雲 go 技術社區[雲棲]


MFC VS2012對話框背景填圖

這是使用VS 2012編寫MFC對話框程序的教程,主要是關於圖片處理方麵的操作,這些在MFC遊戲、圖片處理、軟件編寫中是經常要用到的知識。

一.創建項目
文件-新建項目-MFC應用程序-該頁麵使用“基於對話框”-完成即可。

注意:取消“使用Unicode庫”,否則在使用AfxMessageBox會報錯,沒有一個可以轉換的參數類型,要加AfxMessageBox(_T(“..”))。
運行結果:

二.添加背景Bitmap資源
在“資源視圖”中右鍵鼠標Dialog處,選擇“添加資源”。

在“添加資源”對話框中選擇Bitmap,點擊“導入”,選擇工程文件res文件夾中的背景圖片,它會添加一張IDB_BITMAP1的圖片。

注意:在添加的圖片中最好使用的是24位的BMP格式圖片,圖片應該放入res文件夾中。

三.編寫代碼
找到XXXDlg.cpp文件夾下的void CXXXDlg::OnPaint()函數,在else中進行修改。
1.首先注釋掉CDialog::OnPaint()函數
CDialog是個對話框類,OnPaint()是成員函數,是對窗口進行重畫,注釋掉該語句否則會調用該語句不斷重畫,而不會執行下麵添加的代碼。注釋掉該語句後最小化對話框後發現控件不可見,不過移動鼠標後又能看見。
2.添加代碼
else {
//注釋該語句:防止重複調用重畫函數
//CDialog::OnPaint(); 
//添加代碼對話框背景貼圖
CPaintDC   dc(this);  
CRect   rect;  
GetClientRect(&rect);    //獲取對話框長寬      
CDC   dcBmp;             //定義並創建一個內存設備環境
dcBmp.CreateCompatibleDC(&dc);             //創建兼容性DC
CBitmap   bmpBackground;   
bmpBackground.LoadBitmap(IDB_BITMAP1);    //載入資源中圖片
BITMAP   m_bitmap;                         //圖片變量               
bmpBackground.GetBitmap(&m_bitmap);       //將圖片載入位圖中
//將位圖選入臨時內存設備環境
CBitmap  *pbmpOld=dcBmp.SelectObject(&bmpBackground);
//調用函數顯示圖片StretchBlt顯示形狀可變
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcBmp,0,0,m_bitmap.bmWidth,m_bitmap.bmHeight,SRCCOPY);    
}

四.運行結果
運行結果如下圖所示:

由於我是剛學習VS2012編寫MFC程序,在處理顯示圖片中遇到了很多問題,也參考了很多很多CSDN大神的博客,希望這篇博客能幫助大家。~~初學者學習,高手忽略。
其中主要感謝y30369的CSDN一篇使用VC++ MFC的博客,詳細網址如下:
 https://blog.csdn.net/y30369/article/details/6467468
我很大程度上隻是轉載了它的內容,自己在通過VS2012實現該功能的。(Eastmount 2013-5-31-夜12點)

最後更新:2017-04-03 18:52:05

  上一篇:go UESTC 1817 Complete Building the Houses 貪心
  下一篇:go ASP.NET 服務器參數、路徑等