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.youkuaiyun.com/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 控件的透镜效果 就这样完成了!