Функция SetWindowSubclass из WinApi - PullRequest
0 голосов
/ 07 февраля 2020

Попытка скомпилировать некоторый код, который использует функцию SetWindowSubclass с MinGW, но компилятор говорит мне, что такой функции нет. Найдена декларация функции в заголовочном файле commctrl.h, и она, кажется, исключена некоторыми определениями:

image

Можно ли с ней что-нибудь сделать?

1 Ответ

0 голосов
/ 07 февраля 2020

Я воссоздал ту же проблему, используя SetWindowSubclass в Code :: Blocks с MinGW.

Из оператора условия #if видно, что _WIN32_WINNT должно быть больше _WIN32_WINNT_WINXP (представляет Windows XP, поскольку минимальный поддерживаемый клиент SetWindowSubclass is windows XP)

В файле sdkddkver.h _WIN32_WINNT_WINXP определяется как:

#define _WIN32_WINNT_WINXP  0x0501      /* Windows XP */

Поэтому нам нужно определить _WIN32_WINNT больше 0x501:

#define _WIN32_WINNT 0x502
#include <windows.h>
#include <stdio.h>
#include <commctrl.h>

Библиотека, которую вы должны связать в MinGW для этого API-интерфейса: libcomctl32.a.

Кроме того, рекомендуется использовать MSV C и инструмент VS, который может правильно определять эти макросы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...