Вывод информации на второй рабочий стол

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Вывод информации на второй рабочий стол

Сообщение ger_kar » 14.02.2013 (Чт) 16:46

Возникла такая интересная для меня задача, для решения которой я даже не знаю с какой стороны подступиться. И вообще возможно ли такое в принципе, поэтому и решил испросить помощи. А задача вот какая.
Добавить в приложение на VB возможность выводить информацию на второй монитор. Причем эта информация не должна дублироваться. Т.е. на одном (основном мониторе) у оператора одна информация, у клиента на другом мониторе должна отражаться отдельная итоговая информация крупным шрифтом. При этом рабочий стол на каждом мониторе должен быть свой, а не один, который растянули на два монитора. И вот возникает резонный вопрос, а как это можно сделать? И можно ли вообще? Ну два рабочих стола организовать можно и это вопрос из области администрирования, а вот как при этом можно управлять выводом в приложении VB, на какой рабочий стол будет выводиться нужный экземпляр формы я совершенно не представляю.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вывод информации на второй рабочий стол

Сообщение Хакер » 14.02.2013 (Чт) 18:24

—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Вывод информации на второй рабочий стол

Сообщение ger_kar » 14.02.2013 (Чт) 18:59

MSDN писал(а):При использовании нескольких мониторов в качестве независимых дисплеев, рабочий стол содержит один дисплей или набор дисплеев. Этот набор дисплеев всегда включает в себя основной монитор и ведет себя, как отмечалось в других разделах этой темы. Приложение может использовать любой другой монитор в качестве независимого дисплея.

Примечание Использование других мониторов в качестве независимых дисплеев не поддерживается драйверами, которые реализованы в Windows Display Driver Model (WDDM).

Оконный менеджер ничего не знает о независимых дисплеях. Они полностью контролируют приложения, а не функции менеджера окон доступны для приложений (все окна менеджер вызывает автоматически с переходом в основной дисплей). Каждый независимый дисплей имеет свое собственное происхождение и горизонтальные и вертикальные координаты, и доступны через функции GDI, таких как CreateDC или DirectX функций, таких как DirectDrawCreate.

Чтобы найти независимых дисплеев, вызов EnumDisplayDevices и смотреть на дисплеях, которые не имеют DISPLAY_DEVICE_ATTACHED_TO_DESKTOP флаг в DISPLAY_DEVICE структуры.
Приложение может открыть дисплей по вызову

HDC = CreateDC (lpszDisplayName, NULL, NULL, lpDevMode);

В этом вызове, lpszDisplayName параметр является одним из имен устройств возвращаются EnumDisplayDevices и lpDevMode является описание графического режима для данного устройства. Полученный HDC может быть использован для выполнения любых графические операции на устройстве.


Вобщем как я понял из прочитанного, нужно перечислить все имеющиеся дисплеи и потом нужно сделать контекст с именно этим устройством. Тут более менее понятно. Но как это прикрутить к приложению, что-бы очередной экземпляр формы создавал свое окно именно в этом контексте?
Бороться и искать, найти и перепрятать


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Mail.ru [бот] и гости: 79

    TopList