✅ 操作成功!

消息传递

发布时间:2023-06-13 作者:admin 来源:文学

消息传递

消息传递

郁病-颜色表

2023年3月18日发(作者:五好是哪五好)

QT进程通讯--通过消息进⾏传递

QT是通过nativeEvent()函数来捕获window系统发送过来的消息,所以要重写这个消息。

⽽MFC是通过重写OnCopyData来捕获消息

在发送和接收⽅都添加

头⽂件添加:

发送⽅:

接收⽅

#pragmaexecution_character_set("utf-8")

1#include

2#pragmacomment(lib,"")

1HWNDhWnd=NULL;

2QStringstr("服务端");

3hWnd=::FindWindowW(NULL,(LPCWSTR)16());//找窗⼝名称,窗⼝名称中⽂英⽂均可

4inta=0;

5if(::IsWindow(hWnd))

6{

7COPYDATASTRUCTcd;

8

9QStringstr=QStringLiteral("newdata1245");

=100;

=();

=8().data();

13::SendMessageW(hWnd,WM_COPYDATA,0,reinterpret_cast(&cd));

14

15}

问题:关键是:中⽂乱码

两个客户端都设置了

但在接收显⽰时,中⽂⼀直乱码。。。。各位⼤神求⽀招。。。

1

2boolWidget::nativeEvent(constQByteArray&eventType,void*message,long*result)

3{

4

5MSG*param=static_cast(message);

6

7switch(param->message)

8{

9caseWM_COPYDATA:

10{

11COPYDATASTRUCT*cds=reinterpret_cast(param->lParam);

12//QString*cds=reinterpret_cast(param->lParam);

13

14

15

16if(cds->dwData==100)

17{

18charbuf[100]={0};

19memcpy(buf,cds->lpData,cds->cbData);

20//QStringstrMessage=buf;

21QStringstrMessage=QString::fromUtf8(reinterpret_cast(cds->lpData),cds->cbData);

22QStringstrMessage2=(char*)(cds->lpData);

23

24qDebug()<<"len="<<()<<()<

25QStringstr1=QString::fromUtf8("提⽰");

26qDebug()<<"message1="<<(strMessage)<

27

28qDebug()<<"message17="<<8()<

29QMessageBox::warning(this,str1,strMessage);

30

31qDebug()<<"message3="<

32*result=1;

33returntrue;

34}

35}

36}

37

38returnQWidget::nativeEvent(eventType,message,result);

39}

#pragmaexecution_character_set("utf-8")

👁️ 阅读量:0