我想弄清楚如何使用winapi SetWindowSubclass
在MSVC下的非Qt项目上,我可以通过以下方法使用API:
#include <commctrl.h>
#pragma comment(lib, "Comctl32.lib")几个小时以来,我一直试图将这个库链接到我的项目上,但没有成功。我在我的机器上找到了这些comctl32.lib:https://i.imgur.com/D5uOCVb.png
我试着加入.pro
LIBS += -comctl32
LIBS += -comctl32.lib => error: unrecognized command-line option '-comctl32'
LIBS += comctl32
LIBS += comctl32.lib => error: cannot find comctl32: No such file or directory
我从C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\um\arm64复制了它,并在C:\Qt\Libs下的一个新文件夹中通过它
LIBS += C:\Qt\Libs => error: cannot find C:\Qt\Libs: Permission denied
LIBS += -L"C:\Qt\Libs" => --它没有抛出上面的任何错误,但是现在我有了以下编译器错误:

.pro
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++17
LIBS += -L"C:\Qt\Libs"
#win32:QMAKE_FLAGS += -L"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\um\arm64"
#win32:LIBS += cm-comctl32.lib
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
rcdata.qrc.h
#include <commctrl.h>
#pragma comment(lib, "Comctl32.lib") // <- warning: Unkown pragma ignored.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
SetWindowSubclass((HWND)ui->tabWidget->find(0), ButtonProc, 0, (DWORD_PTR)&ui);
DWORD err = GetLastError();
}使用8.0.1
QT6.3.1,编译器MinGW 64位
发布于 2022-08-23 19:35:09
它应该是编译器的LIBS += -lcomctl32,而不是您尝试过的其他几个选项。这个相关的问题还有更多的细节:在Qt项目中添加外部库
https://stackoverflow.com/questions/73463785
复制相似问题