当_WIN32_WINNT大于0x500时,ToolTip窗口不显示问题排查

当_WIN32_WINNT宏从0x500改为0x501时,导致ToolTip窗口组件出错不显示。问题源于设置ClearType属性时修改了宏值,而 TOOLINFO 结构体大小变化,与系统默认的不匹配。解决方案是调整TOOLINFO结构体的cbSize赋值,或者使用#pragma comment链接6.0版本的comctrl。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#pragma once #include "QtGuiApplication3.h" #include<QMessagebox> #include<Windows.h> #include<CString> #include<synchapi.h> #include <QCloseEvent> using namespace std; QtGuiApplication3::QtGuiApplication3(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); groupBox = new QButtonGroup(); groupBox1 = new QButtonGroup(); groupBox->addButton(ui.radioButton_2, 1); groupBox->addButton(ui.radioButton_3, 2); groupBox1->addButton(ui.radioButton, 1); groupBox1->addButton(ui.radioButton_4, 2); groupBox1->addButton(ui.radioButton_5, 3); //connect(groupBox, SIGNAL(idClicked(int)), this, SLOT(p_group(int))); ui.radioButton_2->setChecked(true); ui.radioButton_4->setChecked(true); ui.IPedit->setText("127.0.0.1"); /*connect(ui.leftButton, SIGNAL(clicked()), &m_core, SLOT(&NCCore:moveClick)); connect(ui.connectButton, SIGNAL(clicked()), &m_core, SLOT(&NCCore:connectClick));*/ //connect(ui.connectButton, &QPushButton::clicked, this, &QtGuiApplication3::connectClick); connect(ui.leftButton, &QPushButton::released, this, &QtGuiApplication3::stopmoveClick); connect(ui.leftButton, &QPushButton::pressed, this, &QtGuiApplication3::moveClick); connect(ui.rightButton, &QPushButton::released, this, &QtGuiApplication3::stopmoveClick); connect(ui.rightButton, &QPushButton::pressed, this, &QtGuiApplication3::moveRightClick); connect(ui.ParamsButton, &QPushButton::clicked, this, &QtGuiApplication3::openParamsWindow); connect(&t, &TThread::getP, this, &QtGuiApplication3::showDistance); } int QtGuiApplication3::getgroupId() { return groupBox->checkedId(); } void QtGuiApplication3::connectClick() { if (m_pBoard) { DestroyKWZBoard(m_pBoard); } m_pBoard = CreateKWZBoard(); m_axisNum = 0; for (int i = 0; i < 6; i++) { if (GetAxisIndex(i) >= 0) { m_axisNum = max(m_axisNum, GetAxisIndex(i) + 1); } } // 初始化控制卡 string str; // "127.0.0.1","192.168.0.11"; QMessageBox msgBox; m_boardIP =ui.IPedit->text(); msgBox.setIcon(QMessageBox::Information); str = m_boardIP.toStdString(); char* ipaddr = new char[str.length() + 1]; strcpy(ipaddr, str.c_str()); int res = m_pBoard->BoardInit(ipaddr, 0, m_axisNum); int failedTimes = 2; while (res != 0 && failedTimes > 0) { Sleep(1000); failedTimes--; res = m_pBoard->BoardInit(ipaddr, 0, m_axisNum); } if (res != 0) { msgBox.setWindowTitle("Connection"); msgBox.setText("Connection failed"); msgBox.exec(); } else { msgBox.setWindowTitle("Connection"); msgBox.setText("Connection successful"); //m_pBoard->SetAType(0, 7); //m_pBoard->SetPulseOutmode(0, 0); t.m_pBoard = m_pBoard; t.start(); msgBox.exec(); int nRatio = m_pBoard->AxisIOStatus(0); /*int x = m_pBoard->ReadInport2(0, 15, (unsigned int*)&nRatio); ui.inlabel->setText(QString::number(x, 'd', 1));*/ } } void QtGuiApplication3::showDistance(double p) { QString x = QString::number(p, 'f', 4); ui.distance_label->setText(QString::number(p, 'f', 4)); } void QtGuiApplication3::moveClick() { QString distance; if (groupBox->checkedId() == 2) { if (groupBox1->checkedId() < 3) { distance = groupBox1->checkedButton()->text(); m_pBoard->Pmove(0, distance.toDouble(), 1); } else { distance = ui.lineEdit->text(); float x = distance.toDouble(); m_pBoard->Pmove(0, x, 1); } } else{ m_pBoard->Vmove(0,0, 100); } } void QtGuiApplication3::stopmoveClick() { if (groupBox->checkedId() == 1) { m_pBoard->StopAxis(0); } } void QtGuiApplication3::moveRightClick() { QString distance; if (groupBox->checkedId() == 2) { if (groupBox1->checkedId() < 3) { distance = groupBox1->checkedButton()->text(); m_pBoard->Pmove(0, -distance.toDouble(), 1); } else { distance = ui.lineEdit->text(); double x= -distance.toDouble(); m_pBoard->Pmove(0, x, 1); } } else { m_pBoard->Vmove(0, 1, 100); } } void QtGuiApplication3::closeEvent(QCloseEvent *event) { t.stopThread(); if (!t.wait(1000)) { t.terminate(); } event->accept(); } int QtGuiApplication3::GetAxisIndex(int axisType) { /*if (m_axisDefine[axisType] == AXIS_DEFINE_NOT_EXIST) { return -1; }*/ return m_axisIndex[axisType]; } void QtGuiApplication3::openParamsWindow() { if (!ParamsWindow) { ParamsWindow = new setParams(this); } ParamsWindow->show(); ParamsWindow->raise(); ParamsWindow->activateWindow(); }为什么新窗口显示
最新发布
06-25
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dvlinker

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

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

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

打赏作者

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

抵扣说明:

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

余额充值