QT开发小计:四、自定义Windows消息传递给窗口

1、创建消息结构体:

//窗口传递消息结构体
struct WindowMsg
{
    QString msg;
};

2、发送消息函数:

//POST消息到窗口
void PostMsg2Window(QString msg)
{
    current_date_time=QDateTime::currentDateTime();
    QString current_date =current_date_time.toString("yyyy-MM-dd hh:mm:ss"); //获取当前时间

    HWND hWnd = ::FindWindow(NULL, L"海康报警监听服务"); //获取当前窗口句柄

    WindowMsg *struWinMsg= new WindowMsg;
    struWinMsg->msg=current_date + " " + msg;

    ::PostMessage(hWnd,(WM_USER+1),(WPARAM)struWinMsg,sizeof(struWinMsg));//向窗口发送消息

}

3、窗体接收消息

//窗口消息接收
bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
    MSG *msg = static_cast<MSG*>(message);  //类型转换
    if (msg->message == WM_USER+1)
    {
        WindowMsg * struWinMsg=(WindowMsg*)msg->wParam;
        ui->plainTextEdit->appendPlainText(struWinMsg->msg);
        delete struWinMsg;
    }
    return false; //消息继续传递给系统
}

4、在回调内调用,信息发送给窗口:

//回调函数
void  CALLBACK MessageCallback(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser)
{
    LONG cmd= lCommand;//上传的消息类型
    char* ip_add= pAlarmer->sDeviceIP; //报警设备IP地址
    char* d_name= pAlarmer->sDeviceName;//报警设备名称
    byte* sn= pAlarmer->sSerialNumber;//报警设备序列号
    DWORD l= dwBufLen;//报警信息缓存大小
    void* p= pUser;//用户数据

    NET_ITS_PLATE_RESULT struPlateResult;    //识别结果结构体
    memcpy(&struPlateResult, pAlarmInfo, sizeof(NET_ITS_PLATE_RESULT));

    QString str_ip(ip_add);
    PostMsg2Window("设备IP地址:"+str_ip);

    QString str_name(d_name);
    PostMsg2Window("设备名称:"+str_name);

    QString str_sn((char*)sn);
    PostMsg2Window("设备序列号:"+str_sn);


    switch(cmd)//上传的消息类型
    {
    case COMM_ITS_PLATE_RESULT://交通抓拍结果(车辆、车牌识别及抓拍图片)上传
    {
        NET_DVR_PLATE_INFO struPlateInfo=struPlateResult.struPlateInfo;//交通抓拍结果车牌信息结构体
        char* license= struPlateInfo.sLicense; //车牌号码
        QString str_license(license);
        PostMsg2Window("车牌号码:"+str_license);
    }
        break;
    default:
        break;
    }
}

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzl640

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值