把自己经常用的收集在一起,免得忘记了到处乱找
主要是位图背景和简单的颜色背景
装载位图背景
CBitmap BmpBackground
HWND hWnd;
CPaintDC* dc;
CRect rect;
GetClientRect(hWnd, &rect);
CDC dcMem;
dcMem.CreateCompatibleDC(dc);
BITMAP bitmap;
BmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld = dcMem.SelectObject(&BmpBackground);
//dc.SetStretchBltMode(COLORONCOLOR);
dc->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
dcMem.SelectObject(pbmpOld);
BmpBackground.DeleteObject();
dcMem.DeleteDC();
RGB颜色背景
OnPaint 函数下添加,
COLORREF m_clrClient;
CRect rect;
GetClientRect(&rect);
dc.FillSolidRect(rect, m_clrClient);
多窗口滑动切屏
借鉴了一下几位CSDN朋友的文章,简要的贴一下,效果还是可以。
超级大懒人,所以直接把下一瓶的对话框截屏了然后保存成位图。。。。
FYI我的屏幕是800*480分辨率。
大概就是这样我也记不清了。
#define CUTBackGround //下一屏的截屏
HDC hDC;
HDC hMemDC;
HDC hDCBmp;
HANDLE hBmpDis;
HBITMAP hBitmap;
HBITMAP hOldMemBmp;
switch (nDirection)
{
case MOVE_LEFT:
{
hDC = GetWindowDC(hWnd);
hMemDC = CreateCompatibleDC(hDC);
hBitmap = CreateCompatibleBitmap(hDC, 1600, 480);
hOldMemBmp = (HBITMAP)SelectObject(hMemDC, hBitmap);
BitBlt(hMemDC,0,0,800,480,hDC,0,0,SRCCOPY);
hDCBmp = CreateCompatibleDC(hDC);
hBmpDis = LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(CUTBackGround),IMAGE_BITMAP,0,0,0);
SelectObject(hDCBmp, hBmpDis);
BitBlt(hMemDC,800,0,1600,480,hDCBmp,0,0,SRCCOPY);
for(DWORD dwPos = 0; dwPos <= 800; )
{
BitBlt(hDC, 0, 0, 800, 480, hMemDC, dwPos, 0, SRCCOPY);
dwPos = dwPos + 10;
}
break;
}
空间的透明背景
重载OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)函数
普通的RGB颜色背景的话,静态文本框
m_BKBrush.CreateSolidBrush(m_clrClient); //初始化时添加
if( nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetTextColor(RGB(222,224,225));
pDC->SetBkMode(TRANSPARENT);
hbr=(HBRUSH)(m_BKBrush.GetSafeHandle());
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">}</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="cpp">如果背景是位图的话,初始化时添加这个
<span style="font-family: Arial, Helvetica, sans-serif;">m_BKBrush.CreatePatternBrush(&BmpBackground);</span>
还有什么的想起来再添加吧。