pptⅤm1手机用法富士施乐m118w说明书书

M1课件_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
上传于||暂无简介
大小:2.64MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢1863人阅读
原理简单,用的是TCP协议。电脑端用C++写的。
手机端监控按键,发送控制指令;电脑端监听指令,调到与指令相对应的虚拟按键函数。废话不说,直接上代码。
手机端的:
//监听几个指令按钮
private OnClickListener ControlClickListener = new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId()==R.id.last){
sendMessage(8+&&);
if(v.getId()==R.id.next){
sendMessage(9+&&);
if(v.getId()==R.id.buttonF5){
sendMessage(&F5&+&&);
//模拟鼠标
private OnClickListener StartMouseListener = new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (isConnecting && mSocketClient!=null)
Intent intent = new Intent();
intent.setClass(MainActivity.this, mouseActivity.class);
startActivity(intent);
Toast.makeText(mContext, &没有连接&, Toast.LENGTH_SHORT).show();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//除了pemession外的第二种防休眠的方法
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
mContext =
IPText= (EditText)findViewById(R.id.IPText);
IPText.setText(&192.168.1.105&);
startButton= (Button)findViewById(R.id.StartConnect);
startButton.setOnClickListener(StartClickListener);
lastButton=(Button)findViewById(R.id.last);
lastButton.setOnClickListener(ControlClickListener);
nextButton=(Button)findViewById(R.id.next);
nextButton.setOnClickListener(ControlClickListener);
startMouseButton=(Button)findViewById(R.id.mouse);
startMouseButton.setOnClickListener(StartMouseListener);
//保留,用 于发送给服务端的
//editMsgTextCilent= (EditText)findViewById(R.id.clientMessageText);
// editMsgTextCilent.setText(&up&);
// sendButtonClient= (Button)findViewById(R.id.SendButtonClient);
// sendButtonClient.setOnClickListener(SendClickListenerClient);
F5Button=(Button)findViewById(R.id.buttonF5);
F5Button.setOnClickListener(ControlClickListener);
senorCb=(CheckBox)findViewById(R.id.senor);
senorCb.setOnCheckedChangeListener((new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,arg1?&选中了&:&取消了选中&
, Toast.LENGTH_LONG).show();
if(arg1==true)
senorChecked=
senorChecked=
wifiButton=(Button)findViewById(R.id.wifi);
wifiButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(android.os.Build.VERSION.SDK_INT & 10)
// 3.0以上打开设置界面,也可以直接用ACTION_WIRELESS_SETTINGS打开到wifi界面
startActivity(new Intent( android.provider.Settings.ACTION_SETTINGS));
startActivity(new Intent( android.provider.Settings.ACTION_WIRELESS_SETTINGS));
recvText= (TextView)findViewById(R.id.RecvText);
recvText.setMovementMethod(ScrollingMovementMethod.getInstance());
recvText.setTextColor(Color.RED);
private OnClickListener StartClickListener = new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (isConnecting)
isConnecting =
sendMessage(4+&&);//告诉电脑退出,,发不出去why?????
if(mSocketClient!=null)
mSocketClient.close();
mSocketClient =
mPrintWriterClient.close();
mPrintWriterClient =
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
mThreadClient.interrupt();
th.interrupt();
startButton.setText(&开始连接&);
IPText.setEnabled(true);
recvText.setText(&信息:\n&);
isConnecting =
startButton.setText(&停止连接&);
IPText.setEnabled(false);
recvText.setText(&信息:\n&);
mThreadClient = new Thread(mRunnable);
mThreadClient.start();
senor=new Senor();
th=new Thread(senor);
th.start();
public void sendMessage(String msgText) {
// TODO Auto-generated method stub
if ( isConnecting && mSocketClient!=null)
if(msgText.length()&=0)
Toast.makeText(mContext, &发送内容不能为空!&, Toast.LENGTH_SHORT).show();
mPrintWriterClient.print(msgText);//发送给服务器
mPrintWriterClient.flush();
catch (Exception e)
// TODO: handle exception
Toast.makeText(mContext, &发送异常:& + e.getMessage(), Toast.LENGTH_SHORT).show();
Toast.makeText(mContext, &没有连接&, Toast.LENGTH_SHORT).show();
//线程:监听服务器发来的消息
private Runnable mRunnable = new Runnable()
public void run()
String msgText =IPText.getText().toString();
if(msgText.length()&=0)
recvMessageClient = &IP不能为空!\n&;//消息换行
Message msg = new Message();
msg.what = 1;
mHandler.sendMessage(msg);
char temp[]=new char[msgText.length()];
temp=msgText.toCharArray();
int numOfDot=0;
boolean flagForIP=
for(int i=0;i&msgText.length();i++)
if(temp[i]=='.')
numOfDot++;
if(temp[i]&'9'||temp[i]&'0')
flagForIP=
if( (numOfDot != 3) ||(flagForIP==false) )
Log.v(&numOfDot&, String.valueOf(numOfDot)+flagForIP);
recvMessageClient = &IP地址不合法\n&;//消息换行
Message msg = new Message();
msg.what = 1;
mHandler.sendMessage(msg);
numOfDot=0;
flagForIP=
String sIP = msgT//.substring(0, start);
//String sPort = msgText.substring(start+1);
int port = 6666;//java int类型可是32位有符号的数。、
// DatagramSocket client = new DatagramSocket();
byte[] sendBuf=new byte[20];
DatagramPacket sendPacket
= new DatagramPacket(sendBuf ,sendBuf.length , sIP , port);
client.send(sendPacket);
//连接服务器
mSocketClient = new Socket(sIP, port); //portnum
//取得输入、输出流
mBufferedReaderClient = new BufferedReader(new InputStreamReader(mSocketClient.getInputStream()));
mPrintWriterClient = new PrintWriter(mSocketClient.getOutputStream(), true);
recvMessageClient = &已经连接server!\n&;//消息换行
sendMessage(0+&&);//告诉电脑端手机已上线连接!
Message msg = new Message();
msg.what = 1;
mHandler.sendMessage(msg);
catch (Exception e)
recvMessageClient = &连接IP异常:& + e.toString() + e.getMessage() + &\n&;//消息换行
Message msg = new Message();
msg.what = 1;
mHandler.sendMessage(msg);
char[] buffer = new char[256];
int count = 0;
while (isConnecting)
//if ( (recvMessageClient = mBufferedReaderClient.readLine()) != null )
if((count = mBufferedReaderClient.read(buffer))&0)
recvMessageClient = getInfoBuff(buffer, count) + &\n&;//消息换行
Message msg = new Message();
msg.what = 1;
mHandler.sendMessage(msg);
catch (Exception e)
recvMessageClient = &接收异常:& + e.getMessage() + &\n&;//消息换行
Message msg = new Message();
msg.what = 1;
mHandler.sendMessage(msg);
Handler mHandler = new Handler()
public void handleMessage(Message msg)
super.handleMessage(msg);
if(msg.what == 0)
recvText.append(&Server: &+recvMessageServer); // 刷新
else if(msg.what == 1)
recvText.append(&Client: &+recvMessageClient); // 刷新
private String getInfoBuff(char[] buff, int count)
char[] temp = new char[count];
for(int i=0; i& i++)
temp[i] = buff[i];
return new String(temp);
public void onDestroy() {
super.onDestroy();
if (isConnecting)
isConnecting =
if(mSocketClient!=null)
mSocketClient.close();
mSocketClient =
mPrintWriterClient.close();
mPrintWriterClient =
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
mThreadClient.interrupt();
th.interrupt();
class Senor implements Runnable{
float x,y,z;
boolean xflag=
boolean zflag=
boolean yflag=
boolean flag=
SensorManager sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
public void run() {
// TODO Auto-generated method stub
SensorEventListener lsn = new SensorEventListener() {
public void onSensorChanged(SensorEvent e) {
x = e.values[SensorManager.DATA_X];
y = e.values[SensorManager.DATA_Y];
z = e.values[SensorManager.DATA_Z];
setTitle(&x=&+(int)x+&,&+&y=&+(int)y+&,&+&z=&+(int)z+xflag+zflag);
if(senorChecked==true)
if(z&=7&&(zflag==true))
if(z&-7&&(zflag==false))
sendMessage(&9&+&&);
if(y&=6&&(yflag==true))
// sendMessage(&8&+&&);
if(y&-6&&(yflag==false))
sendMessage(&8&+&&);
public void onAccuracyChanged(Sensor s, int accuracy) {
//注册listener,第三个参数是检测的精确度
sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
private long exitTime = 0;
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode== KeyEvent.KEYCODE_VOLUME_DOWN)
sendMessage(&8&+&&);
// 音量增大
if(keyCode==KeyEvent.KEYCODE_VOLUME_UP)
sendMessage(&9&+&&);
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
if((System.currentTimeMillis()-exitTime) & 2000){
Toast.makeText(getApplicationContext(), &再按一次退出程序&, Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
sendMessage(4+&&);//告诉电脑退出
System.exit(0);
return super.onKeyDown(keyCode, event);
电脑端主要源码:
#include &stdafx.h&
#include &PPT-Controler.h&
#include &PPT-ControlerDlg.h&
#include &afxdialogex.h&
#include &iostream&
#include &WINSOCK2.H&
#include &stdio.h&
#include &string&
#include &windows.h&
#include &iomanip&
// for controlling float print precision
#include &sstream&
// string to number conversion
#include &cv.h&
#include &highgui.h&
#include &cxcore.h&
#include &opencv2/imgproc/imgproc.hpp&
// Gaussian Blur
#include &opencv2/core/core.hpp&
// Basic OpenCV structures (cv::Mat, Scalar)
#include &opencv2/highgui/highgui.hpp&
// OpenCV window I/O
#pragma comment(lib,&ws2_32.lib&)
#ifdef _DEBUG
#define new DEBUG_NEW
const char* WINDOWNHANDLERNAME = &PPT-Controler&;
void socketMoveMouse(int direction,int step);
void mouseMove(char *message);
void analyseCommand(char *message);
char* getIP();
SOCKET ServerS
SOCKET connectS
struct sockaddr_in dstclient_
char recv_message_server[256] = {0};
send_message[256] = {0};
DWORD ThreadID;
volatile BOOL ThreadRun =
BOOL InItServerSock()
//Variable Define
WORD wMajorVersion,wMinorV
WORD wVersionR
WSADATA lpmyWSAD
//InI Winsock
wMajorVersion = 1;
wMinorVersion = 2;
wVersionReqd = MAKEWORD(wMajorVersion,wMinorVersion);
//Startup WinSock
Status = WSAStartup(wVersionReqd,&lpmyWSAData);
if (Status != 0)
return FALSE;
ServerSock = socket(AF_INET,SOCK_STREAM,0);
if (ServerSock == INVALID_SOCKET)
return FALSE;
dstclient_addr.sin_family = PF_INET;
dstclient_addr.sin_port = htons(6666);
dstclient_addr.sin_addr.s_addr = INADDR_ANY;
Status = bind(ServerSock,(struct sockaddr far *)&dstclient_addr,sizeof(dstclient_addr));
if (Status != 0)
return FALSE;
Status = listen(ServerSock,5);
if (Status != 0)
return FALSE;
char name[255];
if( gethostname (name, sizeof(name)) == 0)
if((hostinfo = gethostbyname(name)) != NULL)
CString local_IP_
local_IP_address = inet_ntoa (*(struct in_addr *)*hostinfo-&h_addr_list);
//u_short port = ((dstclient_addr.sin_port & 0xFF00)&&8) | ((dstclient_addr.sin_port & 0x00FF)&&8);
temp.Format(&请连接这个IP地址:\n%s&,local_IP_address);
SetDlgItemText(FindWindow(NULL, WINDOWNHANDLERNAME), ID_IP, temp);
return TRUE;
BOOL waiteAccept()
int len = sizeof(dstclient_addr);
connectSock = accept(ServerSock,(struct sockaddr far *)&dstclient_addr,&len);
if (connectSock & 0)
closesocket(connectSock);
return FALSE;
//GetSCREEN
int SysWidth
= GetSystemMetrics(SM_CXSCREEN);
int SysHeight = GetSystemMetrics(SM_CYSCREEN);
return TRUE;
DWORD WINAPI threadFunc(LPVOID threadNum)
if(!InItServerSock())
if(!waiteAccept())
//等待连接的时候,连接可能被取消。
if(ThreadRun)
//sockaddr
*remoteSockAddr = (struct sockaddr far *)&dstclient_
//getpeername(connectSock, &sockaddr, &nPort_Client);
temp.Format(&%s:%d\n已经连接上!&, inet_ntoa(dstclient_addr.sin_addr), dstclient_addr.sin_port);//remoteSockAddr-&sa_data
SetDlgItemText(FindWindow(NULL, WINDOWNHANDLERNAME), ID_IP, temp);
SetDlgItemText(FindWindow(NULL, WINDOWNHANDLERNAME), ID_INFO, &请启动服务!&);
//send(NewSock,(char*)&FALG,sizeof(FALG)+1,MSG_OOB);
while(ThreadRun)
//length = recv(connectSock,(char*)recv_message,sizeof(recv_message)+1,0);
length = recv(connectSock,(char*)recv_message_server,sizeof(recv_message_server),0);
if( length&0)
//MessageBox(0, recv_message, &接收到的信息&, MB_OK);
temp.Format(&接收到的信息:\n%s&,recv_message_server);
SetDlgItemText(FindWindow(NULL, WINDOWNHANDLERNAME), ID_INFO, temp);
analyseCommand(recv_message_server);
memset(recv_message_server, 0, sizeof(recv_message_server));
void mouseMove(char *message)
char *strPoint = strstr(message, &;&);
if( strPoint!=NULL )
int pointY = atoi(strPoint+1);
memset(strPoint, 0, sizeof(strPoint));
int pointX = atoi(message);
GetCursorPos(&lpPoint);
SetCursorPos(lpPoint.x + pointX, lpPoint.y + pointY);
// MessageBox(0, &接受到的数据有误&, &提示&, MB_OK);
void analyseCommand(char *message)
char command = message[0];
switch(command)
case '0'://取消鼠标动作
//mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
SetDlgItemText(FindWindow(NULL, WINDOWNHANDLERNAME),ID_INFO,&手机端已连接!!!&);
case '1'://移动鼠标
mouseMove(message+2);
case '2'://鼠标左键down
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
case '3'://鼠标左键up
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
SetDlgItemText(FindWindow(NULL, WINDOWNHANDLERNAME),ID_INFO,&手机端已退出连接!!!&);
threadRun=
closesocket(serSocket);
SetDlgItemText(FindWindow(NULL, WINDOWNHANDLERNAME),ID_OPEN,&打开端口&);
SetDlgItemText(FindWindow(NULL, WINDOWNHANDLERNAME), ID_INFO, &请打开端口&);
case '5'://右击
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
case '6'://单击
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
case '7'://双击
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
case '8'://上一页
keybd_event(VK_LEFT,(BYTE)0, 0 ,0);
keybd_event(VK_LEFT, (BYTE)0, KEYEVENTF_KEYUP,0);
case '9'://下一页
keybd_event(VK_RIGHT,(BYTE)0, 0 ,0);;//F5
keybd_event(VK_RIGHT, (BYTE)0, KEYEVENTF_KEYUP,0);
keybd_event(0x74,(BYTE)0, 0 ,0);//F5
keybd_event(0x74, (BYTE)0, KEYEVENTF_KEYUP,0);
keybd_event(0x6B,(BYTE)0, 0 ,0);//图片放大
keybd_event(0x6B, (BYTE)0, KEYEVENTF_KEYUP,0);
case '-'://向下拖动滚动
keybd_event(0x6D,(BYTE)0, 0 ,0);//图片放小
keybd_event(0x6D, (BYTE)0, KEYEVENTF_KEYUP,0);
void socketMoveMouse(int direction,int step)
// TODO: Add your control notification handler code here
GetCursorPos(&lpPoint);
switch(direction)
SetCursorPos(lpPoint.x , lpPoint.y - step);
SetCursorPos(lpPoint.x + step, lpPoint.y);
SetCursorPos(lpPoint.x , lpPoint.y + step);
SetCursorPos(lpPoint.x - step , lpPoint.y);
char* getIP()
WSAStartup(2,&data);
hostent* host = gethostbyname(&&);
char *IP = inet_ntoa(*(struct in_addr*)*(host-&h_addr_list));
printf(&Local IP:%s\n&,IP);
WSACleanup();
return IP;
void handRec()
int delay = 1;
int previousX=0;
int previousY=0;
CvCapture* pCapture = NULL;
pCapture = cvCaptureFromCAM(-1);
const char* WIN_SRC = &Source&;
const char* WIN_RESULT = &Result&;
// Windows
namedWindow(WIN_SRC, CV_WINDOW_AUTOSIZE );
namedWindow(WIN_RESULT, CV_WINDOW_AUTOSIZE);
M // 输入视频帧序列
Mat frameHSV; // hsv空间
Mat mask(frame.rows, frame.cols, CV_8UC1); // 2值掩膜
Mat dst(frame); // 输出图像
vector& vector&Point& & // 轮廓
vector& vector&Point& & filterC // 筛选后的轮廓
vector& Vec4i & // 轮廓的结构信息
vector& Point & // 凸包络的点集
bool lastImgHasHand=
int count=0;
int presentX=0;
int presentY=0;
while(1) //Show the image captured in the window and repeat
//captRefrnc &&
int minX=320;//屏幕的一半
int maxX=240;
int minY=320;
int maxY=240;
frame = cvQueryFrame( pCapture );
if( frame.empty() )
cout && & & & &
Game over!
imshow( WIN_SRC, frame);
// 中值滤波,去除椒盐噪声
medianBlur(frame, frame, 5);
// 转换到HSV颜色空间,更容易处理
cvtColor( frame, frameHSV, CV_BGR2HSV );
Mat dstTemp1(frame.rows, frame.cols, CV_8UC1);
Mat dstTemp2(frame.rows, frame.cols, CV_8UC1);
// 对HSV空间进行量化,得到2值图像,亮的部分为手的形状
inRange(frameHSV, Scalar(0,30,30), Scalar(40,170,256), dstTemp1);
inRange(frameHSV, Scalar(156,30,30), Scalar(180,170,256), dstTemp2);
bitwise_or(dstTemp1, dstTemp2, mask);
//inRange(frameHSV, Scalar(0,30,30), Scalar(180,170,256), dst);
// 形态学操作,去除噪声,并使手的边界更加清晰
Mat element = getStructuringElement(MORPH_RECT, Size(3,3));
erode(mask, mask, element);
morphologyEx(mask, mask, MORPH_OPEN, element);
dilate(mask, mask, element);
morphologyEx(mask, mask, MORPH_CLOSE, element);
frame.copyTo(dst, mask);
contours.clear();
hierarchy.clear();
filterContours.clear();
hull.clear();
// 得到手的轮廓
findContours(mask, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
// 去除伪轮廓
for (size_t i = 0; i & contours.size(); i++)
// approxPolyDP(Mat(contours[i]), Mat(approxContours[i]), arcLength(Mat(contours[i]), true)*0.02, true);
if (fabs(contourArea(Mat(contours[i]))) & 30000) //判断手进入区域的阈值
filterContours.push_back(contours[i]);
if(filterContours.size()&0)
lastImgHasHand=
drawContours(dst, filterContours, -1, Scalar(255,0,255), 3/*, 8, hierarchy*/);
for (size_t j=0; j&filterContours.size(); j++)
convexHull(Mat(filterContours[j]), hull, true);
int hullcount = (int)hull.size();
for (int i=0; i&hullcount-1; i++)
line(dst, hull[i+1], hull[i], Scalar(255,255,255), 2, CV_AA);//白色
if(hull[i].x&maxX)
maxX=hull[i].x;
if(hull[i].x&minX)
minX=hull[i].x;
if(hull[i].y&maxY)
maxY=hull[i].y;
if(hull[i].y&minY)
minY=hull[i].y;
line(dst, hull[hullcount-1], hull[0], Scalar(0,255,0), 2, CV_AA);//绿色,最后一条
if(count==1)//第一个轮廓的中心位置存在全局变量中,到最后一个再跟它比。
previousX=(minX+maxX)/2;
previousY=(minY+maxY)/2;
presentX=(minX+maxY)/2;
presentY=(minY+maxY)/2;
if(lastImgHasHand==true)
if((previousX-presentX)&0)//中文的大括号和英文的大括号用肉眼看不出来,坑啊
//printf(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&left\n&);//镜像,没有flip过来,所以这里注意点。
keybd_event(VK_LEFT,(BYTE)0, 0 ,0);
keybd_event(VK_LEFT, (BYTE)0, KEYEVENTF_KEYUP,0);
if((previousX-presentX)&0)
// printf(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&right\n&);
keybd_event(VK_RIGHT,(BYTE)0, 0 ,0);
keybd_event(VK_RIGHT, (BYTE)0, KEYEVENTF_KEYUP,0);
lastImgHasHand=
imshow(WIN_RESULT, dst);
dst.release();
c = cvWaitKey(1);
if (c == 27)
cvDestroyAllWindows();
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialogEx
CAboutDlg();
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
// DDX/DDV 支持
protected:
DECLARE_MESSAGE_MAP()
CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
CDialogEx::DoDataExchange(pDX);
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()
// CPPTControlerDlg 对话框
CPPTControlerDlg::CPPTControlerDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CPPTControlerDlg::IDD, pParent)
m_hIcon = AfxGetApp()-&LoadIcon(IDR_MAINFRAME);
void CPPTControlerDlg::DoDataExchange(CDataExchange* pDX)
CDialogEx::DoDataExchange(pDX);
BEGIN_MESSAGE_MAP(CPPTControlerDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(ID_OPEN, &CPPTControlerDlg::OnBnClickedOpen)
ON_BN_CLICKED(ID_OPENCAM, &CPPTControlerDlg::OnBnClickedOpencam)
END_MESSAGE_MAP()
// CPPTControlerDlg 消息处理程序
BOOL CPPTControlerDlg::OnInitDialog()
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX & 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
BOOL bNameV
CString strAboutM
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
pSysMenu-&AppendMenu(MF_SEPARATOR);
pSysMenu-&AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
执行此操作
SetIcon(m_hIcon, TRUE);
// 设置大图标
SetIcon(m_hIcon, FALSE);
// 设置小图标
CenterWindow();
ShowWindow(SW_MINIMIZE);
// TODO: 在此添加额外的初始化代码
return TRUE;
// 除非将焦点设置到控件,否则返回 TRUE
void CPPTControlerDlg::OnSysCommand(UINT nID, LPARAM lParam)
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
CAboutDlg dlgA
dlgAbout.DoModal();
CDialogEx::OnSysCommand(nID, lParam);
// 如果向对话框添加最小化按钮,则需要下面的代码
来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
这将由框架自动完成。
void CPPTControlerDlg::OnPaint()
if (IsIconic())
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast&WPARAM&(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
CDialogEx::OnPaint();
//当用户拖动最小化窗口时系统调用此函数取得光标
HCURSOR CPPTControlerDlg::OnQueryDragIcon()
return static_cast&HCURSOR&(m_hIcon);
void CPPTControlerDlg::OnBnClickedOpen()
// TODO: 在此添加控件通知处理程序代码
char* tempIP=getIP();
temp.Format(&在手机端请连接本机IP地址:\n%s&,tempIP);
SetDlgItemText(ID_IP, temp);
if(ThreadRun == false)
ThreadRun =
hThread=CreateThread(NULL,
threadFunc,
NULL,//传递的参数
&ThreadID);
SetDlgItemText(ID_OPEN,&停止服务&);
ThreadRun =
closesocket(connectSock);
closesocket(ServerSock);
SetDlgItemText(ID_OPEN,&开启服务&);
void CPPTControlerDlg::OnBnClickedOpencam()
handRec();
The End!!!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:22510次
排名:千里之外
评论:87条

我要回帖

更多关于 酷狗m1说明书 的文章

 

随机推荐