Я разрабатываю приложение для веб-камеры и хочу повторно использовать то, что выглядит стандартным диалоговым окном для элементов управления камерой (те, которые настраивают параметры веб-камеры, такие как яркость, масштабирование, мерцание компенсация и т. д.). После некоторого копания я определил, что необходимые ресурсы диалога находятся в vfwwdm32.dll, диалоговое окно ID s is 102
10 и 405
. Да, это DLL, которая для древних видео для Windows около 1992Диалоговое окно «Управление камерой» от vfwwdm32.dll
Диалоговых ресурсы доступны через DirectShow, как описано в этом MSDN article, используя интерфейс, предоставляемый IAMVfwCaptureDialogs.
Вопрос № 1:
Собираюсь ли я об этом не так? Если в Windows есть еще одна (более современная) реализация этих диалоговых окон, которые я должен использовать?
Я бы хотел избежать повторной реализации этих методов с использованием «предпочтительного» метода построения моего собственного графического интерфейса, запросив доступные элементы управления непосредственно из WDM и вместо этого просто использовать диалоговые окна, которые уже созданы MS Тем более, что они удовлетворяют мои потребности довольно хорошо.
Вопрос № 2 (главный):
Учитывая, что мое приложение не DirectShow основанных (это MS Media Foundation основанного) Я хотел бы, чтобы не зависеть от DirectShow наследия. Это означает, что я использую метод, описанный в Displaying a dialog resource from..., который в основном сводится к LoadLibrary()
->FindResource()
->LoadResource()
->LockResource()
->CreateDialogIndirectParam()
.
Проблема, с которой я сталкиваюсь, заключается в том, что диалоговое окно должно знать , какая камера для управления. Это, по-видимому, осуществляется через входной параметр в диалоговое окно (я использую этот термин свободно, так как это не функция, а обмен данными диалога ).
Как предоставить необходимую информацию в диалоговом окне, чтобы она могла правильно работать с камерой по моему выбору?
В целом: Как реализовать обмен данными с этим диалоговым окном?
Выполнение метода 'CreateDialogIndirect()' все равно потребует, чтобы вы сами заработали диалоговую логику; вы будете нести ответственность за всю логику этого диалога, если только диалоговая процедура не экспортируется. – andlabs
Итак, маршрут 'IAMVfwCaptureDialogs' через * DirectShow * является единственным способом? :( – YePhIcK
Поскольку вы имеете дело со старой технологией [Video For Windows] (https://msdn.microsoft.com/en-us/library/dd757708.aspx), вы можете искать API 'AVICap' ([ 'capCreateCaptureWindow()'] (https://msdn.microsoft.com/en-us/library/dd756879.aspx), ['capDlgVideoFormat()'] (https://msdn.microsoft.com/en-us/ библиотека/dd756882.aspx), ['capDlgVideoDisplay()'] (https://msdn.microsoft.com/en-us/library/dd756881.aspx) и т. д.). См. [Отображение диалоговых окон для установки характеристик видео] (https://msdn.microsoft.com/en-us/library/dd797890.aspx) –