📄 screensvrwnd.cpp
字号:
// ScreenSvrWnd.cpp : implementation file
//
#include "stdafx.h"
#include "MyScreenSvr.h"
#include "ScreenSvrWnd.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CScreenSvrWnd
CScreenSvrWnd::CScreenSvrWnd(CWnd* pwnd /* = NULL */)
{
pParentWnd = pwnd ;
m_ptInitCursor.x = m_ptInitCursor.y = -1 ;
}
CScreenSvrWnd::~CScreenSvrWnd()
{
}
BOOL CScreenSvrWnd::Create()
{
if(pParentWnd) /*!=NULL*/
{ /*预览*/
CRect rect;
pParentWnd->GetClientRect(&rect);
return CreateEx(0 ,
::AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,NULL,
static_cast<HBRUSH>(::GetStockObject(BLACK_BRUSH)),
::AfxGetApp()->LoadIcon(IDR_MAINFRAME)),
"预览" , WS_VISIBLE|WS_CHILD ,
rect , pParentWnd , NULL
);
}
else
{ /*屏幕保护窗口*/
#ifdef _DEBUG
return CreateEx(0,
::AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,
NULL,
static_cast<HBRUSH>(::GetStockObject(BLACK_BRUSH)),
::AfxGetApp()->LoadIcon(IDR_MAINFRAME)),
"屏幕保护",WS_VISIBLE | WS_POPUP,
CRect(0, 0, ::GetSystemMetrics(SM_CXSCREEN),
::GetSystemMetrics(SM_CYSCREEN)) ,
NULL , NULL );
#else
return CreateEx(WS_EX_TOPMOST,
::AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,
NULL,
static_cast<HBRUSH>(::GetStockObject(BLACK_BRUSH)),
::AfxGetApp()->LoadIcon(IDR_MAINFRAME)),
"屏幕保护",WS_VISIBLE | WS_POPUP,
CRect(0, 0, ::GetSystemMetrics(SM_CXSCREEN),
::GetSystemMetrics(SM_CYSCREEN)) ,
NULL , NULL );
#endif
}
}
BEGIN_MESSAGE_MAP(CScreenSvrWnd, CWnd)
//{{AFX_MSG_MAP(CScreenSvrWnd)
ON_WM_KEYDOWN()
ON_WM_LBUTTONDOWN()
ON_WM_MBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_WM_RBUTTONDOWN()
ON_WM_SYSKEYDOWN()
ON_WM_CLOSE()
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CScreenSvrWnd message handlers
void CScreenSvrWnd::PostNcDestroy()
{
// 由于此窗口为本EXE模块的主窗口,退出消息循环后,需要进行自删除
delete this ;
}
void CScreenSvrWnd::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if( pParentWnd == NULL ) {
this->PostMessage(WM_CLOSE);
}
else
CWnd::OnKeyDown(nChar, nRepCnt, nFlags);
}
void CScreenSvrWnd::OnLButtonDown(UINT nFlags, CPoint point)
{
if( pParentWnd == NULL ){
this->PostMessage(WM_CLOSE);
}
else
CWnd::OnLButtonDown(nFlags, point);
}
void CScreenSvrWnd::OnMButtonDown(UINT nFlags, CPoint point)
{
if( pParentWnd == NULL ){
this->PostMessage(WM_CLOSE);
}
else
CWnd::OnMButtonDown(nFlags, point);
}
void CScreenSvrWnd::OnMouseMove(UINT nFlags, CPoint point)
{
// 要防止鼠标过于微小的振动导致的窗口退出。
if( pParentWnd == NULL){
if( m_ptInitCursor.x<0 || m_ptInitCursor.y<0)
m_ptInitCursor = point ;
else{
int i = abs(point.x - m_ptInitCursor.x) + abs(point.y - m_ptInitCursor.y) ;
if( i > 3){
this->DestroyWindow() ;
}
}
}
else
CWnd::OnMouseMove(nFlags, point);
}
void CScreenSvrWnd::OnRButtonDown(UINT nFlags, CPoint point)
{
if( pParentWnd == NULL ){
this->PostMessage(WM_CLOSE);
}
else
CWnd::OnRButtonDown(nFlags, point);
}
void CScreenSvrWnd::OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if( pParentWnd == NULL ){
this->PostMessage(WM_CLOSE);
}
else
CWnd::OnSysKeyDown(nChar, nRepCnt, nFlags);
}
void CScreenSvrWnd::OnClose()
{
// TODO: Add your message handler code here and/or call default
CWnd::OnClose();
}
int CScreenSvrWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if(pParentWnd == NULL)
::ShowCursor(FALSE) ;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -