一、設置背景顏色的三種方法:
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
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" )
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);
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("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的一樣。
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文件夾裏。
sndPlaySound不能直接播放聲音資源。要用該函數播放WAVE文件,可按下面的方式調用:
sndPlaySound(“MYSOUND.WAV”,SND_ASYNC);
自 己把資源添在Debug文件夾裏。