Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Отключение прозрачности в Win98


Автор: devmstr 21.1.2006, 08:18
Есть программа которая должна работать и под Win98 и под Win2k и т.д.
Нюанс состоит в том что под Win2k окно должно быть прозрачным(WS_EX_LAYERED). Понятно что под Win98 прозрачности нет. Но как сделать что бы программа все таки запускалась. Пробовал просто не присваивать этот стиль окну, если мы в Win98 - не помогает. При запуске Win98 пишет:
Файл NanoTime.exe связан с компонентом User32.dll:SetLayedWindowAtributes.
Как решить возникшую проблему?

Автор: Aleksandor 21.1.2006, 13:53
Почитай про отложенную загрузку DLL

Автор: Fixin 21.1.2006, 17:20
Прощесделать ручную загрузку длл-ки в зависимости от версии винды.

Автор: SergeCpp 22.1.2006, 03:29
Да нет же!

Легче вызывать эту функцию не "прямо", а по указателю, который получить
в самом начале работы программы вызовом GetProcAddress().

А если он NULL, то, естественно, не вызывать.

В самих виндах так многие вызовы устроены (в SHELL32, например).

Код
/* type */ SetLayedWindowAtributes_my( /* stuff */ )
{
    if( WasRetrieved == FALSE )
    {
        pSetLayedWindowAtributes = GetProcAddress( /* MSDN... */ );
        WasRetrieved = TRUE;
    }

    if( pSetLayedWindowAtributes )
    {
        return pSetLayedWindowAtributes( /* stuff */ );
    }

    return /* error or empty result for SetLayedWindowAtributes */;
}

Автор: Fixin 22.1.2006, 16:37
Молоток! Получи по репе!

Автор: devmstr 23.1.2006, 14:48
Спасибо, вообщем понятно, завтра попробую..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)