1、對話框全屏顯示
int iFullWidth = GetSystemMetrics(SM_CXSCREEN);
int iFullHeight = GetSystemMetrics(SM_CYSCREEN);
::SetWindowPos(this->m_hWnd, HWND_TOPMOST, 0, 0, iFullWidth, iFullHeight,SWP_NOOWNERZORDER|SWP_SHOWWINDOW|SWP_HIDEWINDOW);
2、按鈕貼圖
按鈕屬性 Owner Draw 設爲true
//*.h
CBitmapButton m_btn;
//*.cpp
m_btn.AutoLoad(IDC_BUTTON1,this);
m_btn.LoadBitmaps(IDB_BITMAP1);
http://blog.csdn.net/zhangyulin54321/article/details/8154582
HBRUSH CxxxxxxxxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
RECT rect;
CDC memDC;//定義一個設備上下文
CBitmap bmp;//定義位圖對象
switch(nCtlColor)
{
case CTLCOLOR_BTN:
GetDlgItem(pWnd->GetDlgCtrlID())->GetWindowRect(&rect);
memDC.CreateCompatibleDC(pDC);//創建兼容的設備上下文
bmp.LoadBitmap(IDB_BITMAP1);//加載位圖
memDC.SelectObject(&bmp);//選中位圖對象
memDC.SetBkColor(RGB(255,255,255));
pDC->BitBlt(0,0,rect.right,rect.bottom,&memDC,1,1,SRCCOPY);//繪製位圖
pDC->SetBkColor(RGB(255,255,255));
return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
break;
default:
break;
}
}
void CProgramDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch(nChar)
{
case VK_UP://38
MessageBox(L"上");
break;
case VK_DOWN:
MessageBox(L"下");
break;
case VK_LEFT:
MessageBox(L"左");
break;
case VK_RIGHT:
MessageBox(L"右");
break;
}
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
BOOL CProgramDlg::PreTranslateMessage(MSG* pMsg)
{
CString s;
if (pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_UP://38
MessageBox(L"上");
break;
case VK_DOWN:
MessageBox(L"下");
break;
case VK_LEFT:
MessageBox(L"左");
break;
case VK_RIGHT:
MessageBox(L"右");
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
現在有一張背景圖片想貼到主對話框上,並在上面進行界面設置,防止各種控件,但放置Static控件時 Static的背景會覆蓋掉剛貼上去的背景圖片,這樣想是在打補丁很是難看,那怎麼辦呢?!我只是想在主對話框上添加一些文字,背景仍然使用主對話框的響應位置的背景。這下問題來了!好吧試了很多種方法,沒想到只需要稍作修改就可以嘍!
HBRUSH CXXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
RECT rect;
CDC memDC;//定義一個設備上下文
CBitmap bmp;//定義位圖對象
if(nCtlColor == CTLCOLOR_STATIC)
{
GetDlgItem(pWnd->GetDlgCtrlID())->GetWindowRect(&rect);
memDC.CreateCompatibleDC(pDC);//創建兼容的設備上下文
bmp.LoadBitmap(IDB_BITMAP3);//加載位圖
memDC.SelectObject(&bmp);//選中位圖對象
pDC->BitBlt(-rect.left,-rect.top,rect.right,rect.bottom,&memDC,1,1,SRCCOPY);//繪製位圖
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
}
return hbr;
}
void CXXXXDlg::OnPaint()
{
RECT rect;
CDC memDC;//定義一個設備上下文
CBitmap bmp;//定義位圖對象
CPaintDC dc(this); // device context for painting
this->GetWindowRect(&rect);
memDC.CreateCompatibleDC(&dc);//創建兼容的設備上下文
bmp.LoadBitmap(IDB_BITMAP3);//加載位圖
memDC.SelectObject(&bmp);//選中位圖對象
memDC.SetBkColor(RGB(255,255,255));
dc.BitBlt(0,0,rect.right,rect.bottom,&memDC,1,1,SRCCOPY);//繪製位圖
}
static 控件的透鏡效果 就這樣完成了!