-
来自「visual c 灵感编程的1-20节源码」· 代码 · 共 130 行
TXT
130 行
// 透明窗口View.cpp : implementation of the CMyView class
//
#include "stdafx.h"
#include "透明窗口.h"
#include "透明窗口Doc.h"
#include "透明窗口View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyView
IMPLEMENT_DYNCREATE(CMyView, CView)
BEGIN_MESSAGE_MAP(CMyView, CView)
//{{AFX_MSG_MAP(CMyView)
ON_WM_CREATE()
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyView construction/destruction
CMyView::CMyView()
{
// TODO: add construction code here
}
CMyView::~CMyView()
{
memDC.SelectObject(oldObject);//释放资源
memDC.DeleteDC();
}
BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
//将客户区窗口的刷子该为空刷子
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMyView drawing
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CMyView diagnostics
#ifdef _DEBUG
void CMyView::AssertValid() const
{
CView::AssertValid();
}
void CMyView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CMyDoc* CMyView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
return (CMyDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMyView message handlers
int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
//CWnd* mainfraim;
// mainfraim=AfxGetMainWnd();
//mainfraim->SetActiveWindow();
// TODO: Add your specialized creation code here
::SetClassLong(this->m_hWnd,GCL_HBRBACKGROUND,(long)GetStockObject(HOLLOW_BRUSH));
width=GetSystemMetrics(SM_CXSCREEN);//保存当前显示器的分辨率
height=GetSystemMetrics(SM_CYSCREEN);
CWindowDC screenDC(NULL);//获得屏幕窗口的上下文
//初始化位图
hbmp.CreateBitmap(width,height,screenDC.GetDeviceCaps(PLANES),screenDC.GetDeviceCaps(BITSPIXEL),NULL);
memDC.CreateCompatibleDC(NULL);
oldObject=memDC.SelectObject(&hbmp);
memDC.BitBlt(0,0,width,height,&screenDC,0,0,SRCCOPY);
return 0;
}
void CMyView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
RECT clientRect;
GetClientRect(&clientRect);//获得当前客户区的大小
POINT lefttop;
lefttop.x=clientRect.left;
lefttop.y=clientRect.top;
ClientToScreen(&lefttop);//将窗口客户区左上角的点坐标转换为屏幕坐标
//用保存的位图将客户区重画
dc.BitBlt(0,0,clientRect.right,clientRect.bottom,&memDC,lefttop.x,lefttop.y,SRCCOPY);
dc.TextOut(100,0,"Hello world");
// Do not call CView::OnPaint() for painting messages
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?