您的位置:首页 > 编程语言 > C语言/C++

paip.提升用户体验---c++ 悬浮窗体以及右键菜单以及socket接口

2013-09-30 21:18 513 查看
paip.提升用户体验---c++ 悬浮窗体以及右键菜单以及socket接口

作者Attilax , EMAIL:1466519819@qq.com

来源:attilax的专栏

地址:http://blog.csdn.net/attilax

主要socket控件协议:

///////////////////////

show,hide: 显示,隐藏窗口.

stat:显示状态。。

mov : 显示当前位置

mov 100,200 移动位置。

主要流程:

////////////////

a.*.pro add QT += network

b.建立服务器监听器.

server = new QTcpServer();

server->listen(QHostAddress::Any, 6665);

connect(server, SIGNAL(newConnection()), this, SLOT(acceptConnection()));

c.打开新的连接

void FormWdg::acceptConnection(){

clientConnection = server->nextPendingConnection();

connect(clientConnection, SIGNAL(readyRead()), this, SLOT(readClient()));}连接

D.读写socket

void FormWdg::readClient()

QString str = clientConnection->readAll();

clientConnection->write(retx);

测试工具:

//////////////////////

360netman.exe 360网络连接查看器..查看连接情况.

Test Socket 1.4 绿色版_Socket协议测试软件 ..可以测试tcp,udp .服务端,客户端..

源码:

////////////

//c929 socket

#include <QtNetwork>

#include <QTcpServer>

QTcpServer* server;

QTcpSocket *clientConnection;

----------------ini----------------

//c929 socket

//#include <QtNetwork>

server = new QTcpServer();

server->listen(QHostAddress::Any, 6665);

connect(server, SIGNAL(newConnection()), this, SLOT(acceptConnection()));





-----other



void FormWdg::acceptConnection()

{

clientConnection = server->nextPendingConnection();

connect(clientConnection, SIGNAL(readyRead()), this, SLOT(readClient()));

}

#define CALL_FIRST 1

#define CALL_LAST 0

LONG Sequence=1;

LONG Actual[3];

LONG WINAPI

VectoredHandler2(

struct _EXCEPTION_POINTERS *ExceptionInfo

)

{

UNREFERENCED_PARAMETER(ExceptionInfo);

Actual[1] = Sequence++;

return EXCEPTION_CONTINUE_SEARCH;

}

void FormWdg::readClient()

{

QString ret="";

QString str = clientConnection->readAll();

if(str=="hide")

{

this->hide();

}

if(str=="show")

{

this->show();

}

if(str=="stat")

{

// this->show();

if( this->isHidden())

ret="hidden";

else

ret="showed";

}

if(str.trimmed()=="mov")

{

QString x= QString::number( this->x());

QString y= QString::number( this->y());

ret=x+","+y;

}

else if(str.startsWith("mov "))

{

//PVOID h1,h2,h3;

// h2 = //AddVectoredExceptionHandler(CALL_FIRST,VectoredHandler2);

// __try

// _asm

// __asm__ __volatile__

// // {

// ("

// // push 0FFFFFFFFh

// push 0xFFFFFFFF

// mov ebx, offset catch_

// push ebx

// mov eax, dword ptr fs:[0]

// push eax

// mov dword ptr fs:[0], esp

// " )

// }

//

QT_TRY

{

str=str.replace(" "," ");

str=str.replace(" "," ");

str=str.replace(" "," ");

str=str.replace(" "," ");

str=str.replace(", ",",");str=str.replace(", ",",");str=str.replace(", ",",");

// throw 2;

str=str.replace(" ,",","); str=str.replace(" ,",","); str=str.replace(" ,",",");

QStringList sl = str.split( " ");

QString parm=sl.at(1);

QStringList rarmLi = parm.split( ",");

int x= rarmLi.at(0).toInt();

int y=rarmLi.at(1).toInt();

this->move(x,y);

}

// __except(EXCEPTION_EXECUTE_HANDLER)

QT_CATCH(...)

// asm

// {

// label:

// retn

// }

{

qDebug()<<"---some except c93---"<<str;

}

}

// string q2s(const QString &s)

// {

QString qsx="---"+ret;

const char * retx=qsx.toLocal8Bit();

clientConnection->write(retx);

// clientConnection->wr

qDebug()<<"---readstr:---"<<str;

//或者

// char buf[1024];

// clientConnection->read(buf,1024);

}

参考:

Qt Socket简单通信 - Wuyuan's Blog - Just for sharing.htm

网络通信测试工具(socket编程辅助)下载 v1.0 绿色免费版下载_编程工具_下载银行.htm

[转载]Qt异常处理_yi_yuan_1988_新浪博客.htm

__try,__except,__finally,__leave_OGRE_百度空间.htm

浅议Qt的事件处理机制?二(转)_邱国华_新浪博客.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐