Возможно, вам потребуется явно установить WINVER на версию, соответствующую минимальной версии Windows, на которую вы ориентируетесь. Я подозреваю, что его значение по умолчанию не намного выше Win2K ...
Вы можете проверить его значение по умолчанию с помощью быстрого (непроверенного) хака, подобного этому:
#include <windows.h>
#include <stdio.h>
int main(int argc, char **argv) {
printf("WINVER=0x%04x\n", WINVER);
return 0;
}
Скомпилировано как консольное приложение и запущено в командной строке, оно может дать подсказку. В противном случае вы потратите целую вечность, пытаясь найти включаемые файлы, пытаясь определить, где установлено значение по умолчанию.
Редактировать: Как правило, всегда безопаснее всего указывать WINVER для проекта. Либо сделайте это в настройках проекта в Visual Studio (и для всех сборок , а не только в текущей сборке!) Или сделайте это в общем заголовочном файле, включаемом каждым модулем в проекте. Это явным образом уменьшит вероятность того, что различные среды сборки могут иметь разные предположения.