我尝试在Qt中使用Windows api PageSetupDlg来节省一些时间。但是,我在标题编译过程中遇到错误。这是我的代码:
#include <QtCore/QCoreApplication>
#include <windows.h>
#include <QDebug>
int main(int argc, char *argv[])
{
PAGESETUPDLG lppsd;
QCoreApplication a(argc, argv);
//#ifdef Q_WS_WIN
// MessageBox(NULL,TEXT("This is windows window"),
// TEXT("HAHAYOYO"),MB_OK);
PageSetupDlg(&lppsd);
//#endif
return a.exec();
}
我在.pro文件中添加了LIBS += -LC:\Windows\System32\ComDlg32.dll
,但它不起作用。我不确定这样写是否正确。
我的第二个问题是我是否需要添加#ifdef
&amp;我尝试调用Windows API函数时出现#endif
语句?由于MessageBox
函数在没有它们的情况下正确运行。
答案 0 :(得分:1)
您需要添加Comdlg32.lib
,而不是ComDlg32.dll
这是一个dll,而不是包含库。
虽然为什么不使用QPrintDialog
?此外,如果您打算使用该变量,则需要初始化PAGESETUPDLG
变量,请参阅this。
我的第二个问题是我需要添加#ifdef&amp;当我尝试调用Windows API函数时#endif语句?
您应该添加它们,如果您打算在非Windows 系统上运行,WinAPI肯定无法使用(原因是您应该使用QMessageBox
),但是,如果您的系统依赖于WinAPI函数,那么没有意义,因为无论如何都将绑定到Windows。