修改window窗体的背景色
生活随笔
收集整理的這篇文章主要介紹了
修改window窗体的背景色
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、設置背景顏色的三種方法:
1、我們知道程序在運行的時候會調用OnPain函數,那么我們可以在這里設置背景顏色。
void CFlipCardsDlg::OnPaint()?
{
if (IsIconic())
?{
//保持不變
?}
?else
?{???
CRect?? rc;
??GetClientRect( &rc );// 獲取客戶區
??CPaintDC dc(this);
??dc.FillSolidRect(&rc, RGB(0,160,0));? ?// 填充客戶區顏色
??CDialog::OnPaint();???????????
?}
}
2、 第二種方法只要一條語句,但是這里要注意這里繪制的顏色是針對程序中所有的對話框(如果是單文檔的話,好像不行)
SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));
// 前一個RGB是背景色,后一RGB是文本顏色
該函數放在工程的APP文件的初始化函數中。
3、第三種方法,利用ClassWizard 重載OnCtlColor(),即WM_CTLCOLOR消息
在要著色的對話框中申明一個變量,CBRUSH? m_hbrush;然后在項目的Dlg類初始化函數中給m_hbrush賦值。
m_brush.CreateSolidBrush(RGB(0, 255, 0));
然后在OnCtlColor(...)返回該畫刷就可以了,如下。
HBRUSH CFlipCardsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)?
{
?HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
?
?// TODO: Change any attributes of the DC here
?switch (nCtlColor)
?{
?case CTLCOLOR_DLG:
??HBRUSH aBrush;
??aBrush = CreateSolidBrush(RGB(0, 150, 0));
??hbr = aBrush;
??break;
?}
?// TODO: Return a different brush if the default is not desired
?return hbr;
}
這樣 為對話框著色就可以實現了。
二、給MFC添加背景圖圖片代碼:
定位到?? void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代碼:
? //CDialog::OnPaint();//要禁止這個調用???
????? CPaintDC? dc(this);???
????? CRect? rect;???
??GetClientRect(&rect);???
??CDC? dcMem;???
??dcMem.CreateCompatibleDC(&dc);???
??CBitmap? bmpBackground;???
??bmpBackground.LoadBitmap(IDB_BITMAP);??
??//IDB_BITMAP是你自己的圖對應的ID BITMAP? bitmap;???
??bmpBackground.GetBitmap(&bitmap);???
??CBitmap? *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,???
???bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);???
三、MFC 中設置背景音樂問題
#include <mmsystem.h>
#pragma comment( lib, "Winmm.lib" ) PlaySound函數的聲明為:?
BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound); 第一種方法是直接播出聲音文件,相應的代碼為:?
PlaySound("c:\\win95\\media\\The Microsoft Sound.wav", NULL, SND_FILENAME | SND_ASYNC);?
注意參數中的路徑使用兩個連 續的反斜杠轉義代表一個反斜杠。
?
第二種方法是把聲音文件加入到資源中,然后從資源中播放聲音。Visual C++支持WAVE型資源,用戶在資源視圖中單擊鼠標右鍵并選擇Import命令,然后在文件選擇對話框中選擇The Microsoft Sound.wav文件,則該文件就會被加入到WAVE資源中。假定聲音資源的ID為IDR_STARTWIN,則下面的調用同樣會輸出啟動聲音:?
PlaySound((LPCTSTR)IDR_STARTWIN, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC); 第三種方法是用PlaySound播放系統聲音,Windows啟動的聲音是由SystemStart定義的系統聲音,因此可以用下面的方法播 放啟動聲音:?
PlaySound("SystemStart",NULL,SND_ALIAS|SND_ASYNC);?
函數 sndPlaySound的功能與PlaySound類似,但少了一個參數。函數的聲明為:?
BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);?
除了不能指定資源名字外,參數lpszSound與PlaySound的是一樣的。參數 fuSound是如何播放聲音的標志,可以是SND_ASYNC、SND_LOOP、SND_MEMORY、SND_NODEFAULT、 SND_NOSTOP和SND_SYNC的組合,這些標志的含義與PlaySound的一樣。 第四種方法:
sndPlaySound不能直接播放聲音資源。要用該函數播放WAVE文件,可按下面的方式調用:?
sndPlaySound(“MYSOUND.WAV”,SND_ASYNC);
自 己把資源添在Debug文件夾里。
1、我們知道程序在運行的時候會調用OnPain函數,那么我們可以在這里設置背景顏色。
void CFlipCardsDlg::OnPaint()?
{
if (IsIconic())
?{
//保持不變
?}
?else
?{???
CRect?? rc;
??GetClientRect( &rc );// 獲取客戶區
??CPaintDC dc(this);
??dc.FillSolidRect(&rc, RGB(0,160,0));? ?// 填充客戶區顏色
??CDialog::OnPaint();???????????
?}
}
2、 第二種方法只要一條語句,但是這里要注意這里繪制的顏色是針對程序中所有的對話框(如果是單文檔的話,好像不行)
SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));
// 前一個RGB是背景色,后一RGB是文本顏色
該函數放在工程的APP文件的初始化函數中。
3、第三種方法,利用ClassWizard 重載OnCtlColor(),即WM_CTLCOLOR消息
在要著色的對話框中申明一個變量,CBRUSH? m_hbrush;然后在項目的Dlg類初始化函數中給m_hbrush賦值。
m_brush.CreateSolidBrush(RGB(0, 255, 0));
然后在OnCtlColor(...)返回該畫刷就可以了,如下。
HBRUSH CFlipCardsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)?
{
?HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
?
?// TODO: Change any attributes of the DC here
?switch (nCtlColor)
?{
?case CTLCOLOR_DLG:
??HBRUSH aBrush;
??aBrush = CreateSolidBrush(RGB(0, 150, 0));
??hbr = aBrush;
??break;
?}
?// TODO: Return a different brush if the default is not desired
?return hbr;
}
這樣 為對話框著色就可以實現了。
二、給MFC添加背景圖圖片代碼:
定位到?? void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代碼:
? //CDialog::OnPaint();//要禁止這個調用???
????? CPaintDC? dc(this);???
????? CRect? rect;???
??GetClientRect(&rect);???
??CDC? dcMem;???
??dcMem.CreateCompatibleDC(&dc);???
??CBitmap? bmpBackground;???
??bmpBackground.LoadBitmap(IDB_BITMAP);??
??//IDB_BITMAP是你自己的圖對應的ID BITMAP? bitmap;???
??bmpBackground.GetBitmap(&bitmap);???
??CBitmap? *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,???
???bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);???
三、MFC 中設置背景音樂問題
#include <mmsystem.h>
#pragma comment( lib, "Winmm.lib" ) PlaySound函數的聲明為:?
BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound); 第一種方法是直接播出聲音文件,相應的代碼為:?
PlaySound("c:\\win95\\media\\The Microsoft Sound.wav", NULL, SND_FILENAME | SND_ASYNC);?
注意參數中的路徑使用兩個連 續的反斜杠轉義代表一個反斜杠。
?
第二種方法是把聲音文件加入到資源中,然后從資源中播放聲音。Visual C++支持WAVE型資源,用戶在資源視圖中單擊鼠標右鍵并選擇Import命令,然后在文件選擇對話框中選擇The Microsoft Sound.wav文件,則該文件就會被加入到WAVE資源中。假定聲音資源的ID為IDR_STARTWIN,則下面的調用同樣會輸出啟動聲音:?
PlaySound((LPCTSTR)IDR_STARTWIN, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC); 第三種方法是用PlaySound播放系統聲音,Windows啟動的聲音是由SystemStart定義的系統聲音,因此可以用下面的方法播 放啟動聲音:?
PlaySound("SystemStart",NULL,SND_ALIAS|SND_ASYNC);?
函數 sndPlaySound的功能與PlaySound類似,但少了一個參數。函數的聲明為:?
BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound);?
除了不能指定資源名字外,參數lpszSound與PlaySound的是一樣的。參數 fuSound是如何播放聲音的標志,可以是SND_ASYNC、SND_LOOP、SND_MEMORY、SND_NODEFAULT、 SND_NOSTOP和SND_SYNC的組合,這些標志的含義與PlaySound的一樣。 第四種方法:
sndPlaySound不能直接播放聲音資源。要用該函數播放WAVE文件,可按下面的方式調用:?
sndPlaySound(“MYSOUND.WAV”,SND_ASYNC);
自 己把資源添在Debug文件夾里。
總結
以上是生活随笔為你收集整理的修改window窗体的背景色的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IBM胡世忠谈大数据时代企业面临的四大挑
- 下一篇: BESR备机恢复主机