Co zrobić kiedy do programu dodajemy funkcję, która działa w systemach z serii NT? Wydaje się że wystarczy sprawdzić w kodzie wersję systemu i ewentualnie pominąć pewne fragmenty kodu. Niestety nie jest to rozwiązanie, tak skompilowany program/biblioteka na starszym systemie się nie uruchomi.

Rozwiązanie jest trochę trudniejsze. Omówię to na przykładzie SetLayeredWindowAttributes. W zasadzie dochodzą tylko 2 linie kodu:

BOOL (WINAPI *WinSetLayeredWindowAttributes)(HWND,COLORREF,BYTE,DWORD); // tworzymy zmienną - wskaźnik na funkcję
WinSetLayeredWindowAttributes =(BOOL (WINAPI *)(HWND,COLORREF,BYTE,DWORD))GetProcAddress(GetModuleHandle("USER32"),"SetLayeredWindowAttributes"); // Ładujemy funkcję
if(WinSetLayeredWindowAttributes)
{
    // Jeżeli funkcja jest dostępna
}
else
{
   // obsługa dla starszych systemów
}

Tak załadowana funkcja nie będzie przeszkadzała w ładowaniu biblioteki i umożliwi pracę na starszym systemie.