减少远程桌面new的频次

减少远程桌面new缓冲区的频率,将部分从堆上new固定内存的操作改用从栈上分配内存。
This commit is contained in:
yuanyuanxiang
2019-01-21 21:04:17 +08:00
parent 5aadfc13a6
commit 4283a31e66
9 changed files with 37 additions and 35 deletions

View File

@@ -5,6 +5,7 @@
#include "2015Remote.h"
#include "ScreenSpyDlg.h"
#include "afxdialogex.h"
#include <imm.h>
// CScreenSpyDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
@@ -28,6 +29,7 @@ IMPLEMENT_DYNAMIC(CScreenSpyDlg, CDialog)
CScreenSpyDlg::CScreenSpyDlg(CWnd* Parent, IOCPServer* IOCPServer, CONTEXT_OBJECT* ContextObject)
: CDialog(CScreenSpyDlg::IDD, Parent)
{
ImmDisableIME(0);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_bFullScreen = FALSE;
m_iocpServer = IOCPServer;
@@ -415,7 +417,7 @@ BOOL CScreenSpyDlg::PreTranslateMessage(MSG* pMsg)
case WM_SYSKEYDOWN:
case WM_SYSKEYUP:
if (pMsg->wParam == VK_F11 && LeaveFullScreen()) // F11: <20>˳<EFBFBD>ȫ<EFBFBD><C8AB>
return true;
return TRUE;
if (pMsg->wParam != VK_LWIN && pMsg->wParam != VK_RWIN)
{
MSG Msg;
@@ -426,7 +428,7 @@ BOOL CScreenSpyDlg::PreTranslateMessage(MSG* pMsg)
SendCommand(&Msg);
}
if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
return true;// <20><><EFBFBD><EFBFBD>Enter<65><72>ESC<53>رնԻ<D5B6>
return TRUE;// <20><><EFBFBD><EFBFBD>Enter<65><72>ESC<53>رնԻ<D5B6>
break;
}
@@ -439,12 +441,12 @@ VOID CScreenSpyDlg::SendCommand(MSG* Msg)
if (!m_bIsCtrl)
return;
LPBYTE szData = new BYTE[sizeof(MSG) + 1];
const int length = sizeof(MSG) + 1;
BYTE szData[length + 3];
szData[0] = COMMAND_SCREEN_CONTROL;
memcpy(szData + 1, Msg, sizeof(MSG));
m_iocpServer->OnClientPreSending(m_ContextObject, szData, sizeof(MSG) + 1);
delete[] szData;
szData[length] = 0;
m_iocpServer->OnClientPreSending(m_ContextObject, szData, length);
}
BOOL CScreenSpyDlg::SaveSnapshot(void)

View File

@@ -25,6 +25,7 @@ void CTalkDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT_TALK, m_EditTalk);
m_EditTalk.SetLimitText(2048);
}
@@ -63,15 +64,12 @@ void CTalkDlg::OnBnClickedButtonTalk()
CString strData;
m_EditTalk.GetWindowText(strData); //EditBox <20>ϻ<EFBFBD><CFBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char* szBuffer = new char[iLength + 1]; // 2019.1.5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
memset(szBuffer,0,sizeof(char)*iLength);
char szBuffer[4096] = {0};
strcpy(szBuffer,strData.GetBuffer(0));
m_EditTalk.SetWindowText(NULL); //EditBox <20>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_iocpServer->OnClientPreSending(m_ContextObject, (LPBYTE)szBuffer, strlen(szBuffer));//<2F><><EFBFBD>Լ<EFBFBD><D4BC>ڴ<EFBFBD><DAB4>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>
delete [] szBuffer;
}