34 static const int bufSize = 512;
35 TCHAR filename[bufSize];
37 UINT i = GetSystemDirectory(filename, bufSize);
38 if (i > 0 && i < bufSize) {
39 if (_tcscat_s(filename, bufSize, __TEXT(
"\\d2d1.dll")) == 0) {
40 DWORD versionInfoSize = GetFileVersionInfoSize(filename,
nullptr);
41 if (versionInfoSize) {
42 QVarLengthArray<BYTE> info(
static_cast<
int>(versionInfoSize));
43 if (GetFileVersionInfo(filename, 0, versionInfoSize, info.data())) {
47 if (VerQueryValue(info.constData(), __TEXT(
"\\"),
48 reinterpret_cast<
void **>(&fi), &size) && size) {
49 const auto *verInfo =
reinterpret_cast<
const VS_FIXEDFILEINFO *>(fi);
50 return QVersionNumber{HIWORD(verInfo->dwFileVersionMS), LOWORD(verInfo->dwFileVersionMS),
51 HIWORD(verInfo->dwFileVersionLS), LOWORD(verInfo->dwFileVersionLS)};
57 return QVersionNumber();
75 const QVersionNumber systemVersion = systemD2DVersion();
76 const QVersionNumber minimumVersion = minimumD2DVersion();
77 if (!systemVersion.isNull() && systemVersion < minimumVersion) {
78 QString msg = QCoreApplication::translate(
"QWindowsDirect2DIntegration",
79 "Qt cannot load the direct2d platform plugin because "
80 "the Direct2D version on this system is too old. The "
81 "minimum system requirement for this platform plugin "
82 "is Windows 7 SP1 with Platform Update.\n\n"
83 "The minimum Direct2D version required is %1. "
84 "The Direct2D version on this system is %2.")
85 .arg(minimumVersion.toString(), systemVersion.toString());
87 QString caption = QCoreApplication::translate(
"QWindowsDirect2DIntegration",
88 "Cannot load direct2d platform plugin");
91 msg.toStdWString().c_str(),
92 caption.toStdWString().c_str(),
93 MB_OK | MB_ICONERROR);
100 if (!integration->init()) {
102 integration =
nullptr;