一、CStatic從文件夾加載位圖
HBITMAP hbitmap;
//獲得指向靜態控件的指針
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWBMP);
//獲得位圖句柄
HBITMAP Bitmap;
//設置靜態控件的樣式,使其可以使用位圖,并試位標顯示使居中
pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
//設置靜態控件顯示位圖
pStatic->SetBitmap(hBitmap);
二、設置對話框背景(小圖可以漫延填充)
1、把你的圖包含到程序的“Bitmap資源”里,提示說該資源使用了大于256色的調色板,在VC里無法編輯等等,點確定就可以
2、定位到 void CXXXDlg::OnPaint(),在if()...else()中的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);
}
三、CStatic控件透明
可以這樣作的:
HBRUSH CShutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
//讓所有的靜態文本都透明好顯示背景色
if(nCtlColor == CTLCOLOR_DLG)
{
//返回對話框的顏色
hbr=(HBRUSH)::CreateSolidBrush(RGB(146,161,202));
}
if(nCtlColor==CTLCOLOR_STATIC)
{
//讓靜態文本框透明
pDC->SetBkMode(TRANSPARENT);
//pDC->SetTextColor(RGB(255,255,255)); //設置字體顏色白色
hbr=(HBRUSH)::GetStockObject(NULL_BRUSH);
}
if (nCtlColor==CTLCOLOR_EDIT)//設置EDIT控件的顏色
{
HBRUSH hbr1 = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
hbr1=(HBRUSH)::CreateSolidBrush(RGB(0,0,0)); //背景黑色
pDC->SetTextColor(RGB(255,255,255)); //文字白色
pDC->SetBkMode(TRANSPARENT);
return hbr1;
}
return hbr;
}
四、CStatic背景透明后文本覆蓋的問題
http://blog.vckbase.com/hatemath/archive/2005/08/04/10485.aspx