Что-то не могу разобраться... Как я понял по DirectX SDK, EnumDisplayModes, вызванная с флажком DDEDM_REFRESHRATE, должна перечислять каждый видеорежим столько раз, сколько различных частот он поддерживает. Я задаю в DDSURFACEDESC поля dwWidth и dwHeight (включены только флажки DDSD_WIDTH и DDSD_HEIGHT), чтобы перечислять только режимы с заданым разрешением, и вызываю EnumDisplayModes с флажком DDEDM_REFRESHRATE. Однако через СофтАйс вижу, что каждый из режимов (8-битный,16-битный и т.п.) перечисляется только один раз и частота при этом = 0 (поле dwRefreshRate структуры DDSURFACEDESC=0). Может я что-то не то делаю? Как тогда заставить эту чертову функцию перечислить все частоты, поддерживаемые заданым режимом?
А ось у тебя какая? А мониторный драйвер какой? А адаптер? Я видеорежимами порядочно занимался. Даже статью писал здесь на васме про нахождение имеющихся мониторов в компе. В том числе для каждого перечисляются и поддерживаемые видеорежимы в том числе и частоты. Так вот, при одном и том же оборудовании на XP показывает поддерживаемые частоты, а в 98-ой частоты ставит в 0. Это значит стандартная частота. Сообщаемые данные зависят от железа и дров, которые ему установлены в конкретной оси.
Спасибо за подсказку... Скорее всего, таким образом, ошибки в проге нет. Просто нужно учитывать различия ОСей и дров
Да. А ещё внимательно почитать всё, что сказано в MSDN по этой теме. А самое важное. Всё-таки проследить под отладчиком и точно знать ситуацию.