📄 childwin.cpp
字号:
//---------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include "ChildWin.h"
#include "Main.h"
#include "FullScr.h"
#include "Socket.h"
//---------------------------------------------------------------------
#pragma resource "*.dfm"
//---------------------------------------------------------------------
__fastcall TMDIChild::TMDIChild(TComponent *Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------
void __fastcall TMDIChild::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree; // 关闭后自动释放资源
}
//---------------------------------------------------------------------
void __fastcall TMDIChild::Capture()
{
TRecvStreamThread *RecvThread = new TRecvStreamThread(true);
RecvThread->FreeOnTerminate = true; // 线程执行完毕自动释放资源
RecvThread->RemoteAddress = RemoteAddress; // 指定主机IP
RecvThread->CL = CL; // 色深
RecvThread->CQ = CQ; // 品质
RecvThread->RemoteScreen = Image1;
RecvThread->StatusBar = StatusBar1;
int sock=Connect_Server(RemoteAddress, LISTENPORT);
Write_Socket(sock, "2\n");
AnsiString read=Socket_Readln(sock);
closesocket(sock);
this->Caption=RemoteAddress+"("+read+")";
int pos = read.Pos("*");
R_Width=StrToIntDef(read.SubString(1,pos-1),0);
read = read.SubString(pos+1,read.Length()-pos);
R_Height=StrToIntDef(read,0);
RecvThread->Resume(); // 开始执行线程
}
void __fastcall TMDIChild::Image1DblClick(TObject *Sender)
{
// 双击表示继续捕获下一幅图象,创建一个新的线程发送命令并接收图象数据流
// Capture();
}
//---------------------------------------------------------------------------
void __fastcall TMDIChild::FormShow(TObject *Sender)
{
// 设置初始的窗口大小
ClientWidth = 320;
ClientHeight = 240;
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TMDIChild::N3Click(TObject *Sender)
{
// 将图象保存为文件
if (MainForm->SPDialog->Execute())
Image1->Picture->Bitmap->SaveToFile(MainForm->SPDialog->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TMDIChild::N2Click(TObject *Sender)
{
// 全屏显示
FullScrForm->Image1->Picture = Image1->Picture;
FullScrForm->Show();
}
//---------------------------------------------------------------------------
void __fastcall TMDIChild::Image1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
char text[32];
int Rx,Ry;
Rx=X*R_Width/Image1->Width;
Ry=Y*R_Height/Image1->Height;
sprintf(text,"Mouse Pos:(%04d,%04d)",Rx,Ry);
StatusBar1->Panels->Items[1]->Text=text;
Rx=X*65535/Image1->Width;
Ry=Y*65535/Image1->Height;
sprintf(text,"3\n1\n%d\n%d\n",Rx,Ry);
int sock=Connect_Server(RemoteAddress, LISTENPORT);
Write_Socket(sock, text);
closesocket(sock);
}
//---------------------------------------------------------------------------
void __fastcall TMDIChild::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
char text[32];
int Rx,Ry;
Rx=X*65535/Image1->Width;
Ry=Y*65535/Image1->Height;
switch(Button)
{
case mbLeft:
sprintf(text,"3\n2\n%d\n%d\n",Rx,Ry);
break;
case mbRight:
sprintf(text,"3\n4\n%d\n%d\n",Rx,Ry);
break;
case mbMiddle:
sprintf(text,"3\n6\n%d\n%d\n",Rx,Ry);
break;
}
int sock=Connect_Server(RemoteAddress, LISTENPORT);
Write_Socket(sock, text);
closesocket(sock);
}
//---------------------------------------------------------------------------
void __fastcall TMDIChild::Image1MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
char text[32];
int Rx,Ry;
Rx=X*65535/Image1->Width;
Ry=Y*65535/Image1->Height;
switch(Button)
{
case mbLeft:
sprintf(text,"3\n3\n%d\n%d\n",Rx,Ry);
break;
case mbRight:
sprintf(text,"3\n5\n%d\n%d\n",Rx,Ry);
break;
case mbMiddle:
sprintf(text,"3\n7\n%d\n%d\n",Rx,Ry);
break;
}
int sock=Connect_Server(RemoteAddress, LISTENPORT);
Write_Socket(sock, text);
closesocket(sock);
}
//---------------------------------------------------------------------------
void __fastcall TMDIChild::FormHide(TObject *Sender)
{
Timer1->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TMDIChild::Timer1Timer(TObject *Sender)
{
Capture();
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -