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.

