📄 screenview.cpp
字号:
// ScreenView.cpp : implementation file
//
#include "stdafx.h"
#include "peeryouc.h"
#include "ScreenView.h"
#include "mainfrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CScreenView
IMPLEMENT_DYNCREATE(CScreenView, CView)
CScreenView::CScreenView()
{
ifstart=false;
src=0;
des=0;
}
CScreenView::~CScreenView()
{
if(ifstart)
{
if(src)
delete []src;
if(des)
delete []des;
closesocket(s);
WSACloseEvent(hEvent);
closesocket(s1);
WSACloseEvent(hEvent1);
}
}
BEGIN_MESSAGE_MAP(CScreenView, CView)
//{{AFX_MSG_MAP(CScreenView)
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDBLCLK()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_RBUTTONDBLCLK()
ON_WM_RBUTTONDOWN()
ON_WM_RBUTTONUP()
ON_WM_TIMER()
ON_WM_KEYDOWN()
ON_WM_KEYUP()
ON_WM_MBUTTONDBLCLK()
ON_WM_MBUTTONDOWN()
ON_WM_MBUTTONUP()
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CScreenView drawing
void CScreenView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
if(!ifstart)
return;
// TODO: add draw code here
// CDC* pDC;
CRect rect;
GetClientRect(&rect);
// pDC=GetDC();
HDC hdc=pDC->GetSafeHdc();
StretchDIBits(hdc,
// destination rectangle
0, 0, rect.Width(), rect.Height(),
// source rectangle
0, 0, screen.BmpCX, screen.BmpCY,
src+screen.BmpInfoSize,
(BITMAPINFO*)src,
DIB_RGB_COLORS,
SRCCOPY);
}
/////////////////////////////////////////////////////////////////////////////
// CScreenView diagnostics
#ifdef _DEBUG
void CScreenView::AssertValid() const
{
CView::AssertValid();
}
void CScreenView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CScreenView message handlers
#define PEER_MOUSE_LEFTDOWN 2
#define PEER_MOUSE_LEFTUP 3
#define PEER_MOUSE_RIGHTDOWN 4
#define PEER_MOUSE_RIGHTUP 5
#define PEER_MOUSE_MIDDLEDOWN 6
#define PEER_MOUSE_MIDDLEUP 7
#define PEER_MOUSE_LDBCLICK 8
#define PEER_MOUSE_RDBCLICK 9
#define PEER_MOUSE_MDBCLICK 10
#define PEER_MOUSE_MOVE 11
//////////////////////////////////
#define PEER_KEY_DOWN 12
#define PEER_KEY_UP 13
void CScreenView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(!ifstart)
return;
keymouse.style=PEER_MOUSE_MOVE;
float fx,fy;
CRect rect;
GetClientRect(&rect);
fx=(float)point.x/rect.Width();
fy=(float)point.y/rect.Height();
keymouse.x=65535*fx;
keymouse.y=65535*fy;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//CView::OnMouseMove(nFlags, point);
}
void CScreenView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(!ifstart)
return;
keymouse.style=PEER_MOUSE_LDBCLICK;
float fx,fy;
CRect rect;
GetClientRect(&rect);
fx=(float)point.x/rect.Width();
fy=(float)point.y/rect.Height();
keymouse.x=65535*fx;
keymouse.y=65535*fy;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//CView::OnLButtonDblClk(nFlags, point);
}
void CScreenView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(!ifstart)
return;
keymouse.style=PEER_MOUSE_LEFTDOWN;
float fx,fy;
CRect rect;
GetClientRect(&rect);
fx=(float)point.x/rect.Width();
fy=(float)point.y/rect.Height();
keymouse.x=65535*fx;
keymouse.y=65535*fy;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//CView::OnLButtonDown(nFlags, point);
}
void CScreenView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(!ifstart)
return;
keymouse.style=PEER_MOUSE_LEFTUP;
float fx,fy;
CRect rect;
GetClientRect(&rect);
fx=(float)point.x/rect.Width();
fy=(float)point.y/rect.Height();
keymouse.x=65535*fx;
keymouse.y=65535*fy;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//CView::OnLButtonUp(nFlags, point);
}
void CScreenView::OnRButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(!ifstart)
return;
keymouse.style=PEER_MOUSE_RDBCLICK;
float fx,fy;
CRect rect;
GetClientRect(&rect);
fx=(float)point.x/rect.Width();
fy=(float)point.y/rect.Height();
keymouse.x=65535*fx;
keymouse.y=65535*fy;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//CView::OnRButtonDblClk(nFlags, point);
}
void CScreenView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(!ifstart)
return;
keymouse.style=PEER_MOUSE_RIGHTDOWN;
float fx,fy;
CRect rect;
GetClientRect(&rect);
fx=(float)point.x/rect.Width();
fy=(float)point.y/rect.Height();
keymouse.x=65535*fx;
keymouse.y=65535*fy;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//CView::OnRButtonDown(nFlags, point);
}
void CScreenView::OnRButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(!ifstart)
return;
keymouse.style=PEER_MOUSE_RIGHTUP;
float fx,fy;
CRect rect;
GetClientRect(&rect);
fx=(float)point.x/rect.Width();
fy=(float)point.y/rect.Height();
keymouse.x=65535*fx;
keymouse.y=65535*fy;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//CView::OnRButtonUp(nFlags, point);
}
void CScreenView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if(nChar==VK_ESCAPE)
{
if(ifstart)
KillTimer(1);
CMainFrame *pMain=(CMainFrame*)AfxGetApp()->GetMainWnd();
::SendMessage(pMain->GetSafeHwnd(),FULLSCREEN,0,0);
if(ifstart)
SetTimer(1,1000,NULL);
return;
}
if(!ifstart)
return;
keymouse.style=PEER_KEY_DOWN;
keymouse.nkey=nChar;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//VK_LSHIFT
//CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
void CScreenView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if(!ifstart)
return;
keymouse.style=PEER_KEY_UP;
keymouse.nkey=nChar;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//CView::OnKeyUp(nChar, nRepCnt, nFlags);
}
void CScreenView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
//////////屏幕///////////
if(ifstart==0)
screen.BmpSize=10000;
else
screen.BmpSize=0;
if(!PeerSendDataS(s1,(char*)&screen,sizeof(screen),&retLen1,
hEvent1))
{
return ;
}
if(!PeerRecvDataS(s1,(char*)&screen,sizeof(screen),&retLen1,
hEvent1))
{
return ;
}
if(!PeerRecvDataS(s1,(char*)src,screen.BmpSize,&retLen1,
hEvent1))
{
return ;
}
Invalidate();
//CView::OnTimer(nIDEvent);
}
void CScreenView::OnMButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(!ifstart)
return;
keymouse.ctrl=PEER_MOUSE_MDBCLICK;
float fx,fy;
CRect rect;
GetClientRect(&rect);
fx=(float)point.x/rect.Width();
fy=(float)point.y/rect.Height();
keymouse.x=65535*fx;
keymouse.y=65535*fy;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//CView::OnMButtonDblClk(nFlags, point);
}
void CScreenView::OnMButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(!ifstart)
return;
keymouse.ctrl=PEER_MOUSE_MIDDLEDOWN;
float fx,fy;
CRect rect;
GetClientRect(&rect);
fx=(float)point.x/rect.Width();
fy=(float)point.y/rect.Height();
keymouse.x=65535*fx;
keymouse.y=65535*fy;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//CView::OnMButtonDown(nFlags, point);
}
void CScreenView::OnMButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(!ifstart)
return;
keymouse.ctrl=PEER_MOUSE_MIDDLEUP;
float fx,fy;
CRect rect;
GetClientRect(&rect);
fx=(float)point.x/rect.Width();
fy=(float)point.y/rect.Height();
keymouse.x=65535*fx;
keymouse.y=65535*fy;
PeerSendDataS(s,(char*)&keymouse,sizeof(keymouse),&retLen,
hEvent);
//CView::OnMButtonUp(nFlags, point);
}
BOOL CScreenView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
return true;
//return CView::OnEraseBkgnd(pDC);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -