Дело такое. Механизм нумерации дисплеев в системе придумали какие-то фашисты. Чесслово бесит. Короче говоря, имею два дисплея: жк-моник и телик. Какого-то чёрта телевизор получает в системе номер 1, а монитор - номер 2. Хотя по идее HDMI разъём для телевизоров, и устройство, подключаемое через него так же по идее не может быть основным. Средствами ОС сделать основным монитором именно монитор легко. На нём отображается рабочий стол и панель задач, всё чин по чину. Но есть такие "особо умные" приложения, которые в полноэкранном режиме разворачиваются не на тот дисплей, который помечен как основной, а на тот, который в системе под номером один. И номера дисплеев никак не поменять. МБ есть какой-нибудь выход?
Присоединяюсь к вопросу, кстати. У самого такая же проблема в волатиле. Похоже, в OpenGL нет никаких средств для выбора дисплея
А вот в DirectX, емнип, есть... Ну ещё бы, он с виндой на "ты".
Ku2zoff
Нет, стоп. Давайте разберёмся. ChangeDisplaySettings срабатывает именно на том дисплей девайсе, что выбран как основной. Другой вопрос, если ты перетащил окошко волатилы на второй (не основной) монитор, нажимаешь там Alt+Enter и ждёшь, что она развернётся именно на нём. Вот тут и надо юзать ChangeDisplaySettingsEx.
А "особо умные" приложения, наверное, юзают не ChangeDisplaySettings, а таки ChangeDisplaySettingsEx, выбирая нулевой девайс. В то время как им следовало бы юзать ChangeDisplaySettings. Тут, видимо, классическая ситуация "горе от ума".
Добавлено 13-06-2012 в 00:56:
Цитата:
Ku2zoff писал: А у меня-то чужая прога
Для начала скажи, она DirectX или OpenGL использует?
Так точно. Причём внаглую. Это скорее всего WDDM виноват. В ХРюшке моя видеокарточка попросту не определялась. А когда я устанавливал на неё дровишки, то моник уже был под номером один, а телик надо было добавить вручную через мастер многодисплейной конфигурации. А вот в семёрке WDDM определяет мою карточку и автоматом настраивает все устройства и разрешения экранов для них. И конечно же, телик делает основным дисплеем под номером 1.
Ku2zoff
В панели управления нельзя это как-то поменять? Я с таким просто не сталкивался.
Но вообще похоже на глюк Virtualbox, что она не учитывает, какой дисплей установлен первичным. Как я уже описал, средствами WinAPI этот учёт сделать вполне реально.
XaeroX писал: В панели управления нельзя это как-то поменять?
Нет.
Цитата:
XaeroX писал: Но вообще похоже на глюк Virtualbox, что она не учитывает, какой дисплей установлен первичным.
Именно. Потому что все остальные приложения, будь то игры или видеоплееры нормально всё определяют. Игры разворачиваются только на основной дисплей, а плеер только на тот, на котором в данный момент находится его окно.
в гугле нет ничего про настройки через конфиг-файлы самого виртуалЯщика ?
ибо через низкоуровневые настройки чего только не делал (даже время останавливал)
Провёл несколько махинаций. Сначала отключил телевизор (ну то есть в конфиге системы оставил только монитор, шнур не выдёргивал). Естественно всё нормально заработало. Потом снова подключил его. Та же туфта что и раньше. Потом снова отключил, и снова включил через панель управления Nvidia, а не через диалог винды как до этого. Функционально разницы никакой. ! но, работает теперь правильно. Теперь ясно, кто фашисты и кого надо пинать ногами. Мелкомягкие редко что-то нормально делают.
Добавлено 13-06-2012 в 10:01:
Хотя может быть это я сглупил. В настройках вирутальной машины можно выбирать, какой дисплей хоста юзать в полноэкранном режиме. Но тогда претензии к авторам виртуалбокса, потому что изначально юзался не основной системный дисплей, а дисплей под номером 1.