This is a screenshot of standard property page, such as popped up with OleCreatePropertyFrame
API for specific filter. It is using standard APIs to read and write settings for given COM object (DirectShow filter).
To put the settings onto one page, you can create your own property page, or other UI which talks programmatically to the filter and calls the respective methods via IAMCrossbar
and IAMTVTuner
interfaces.
You won't be able to replace existing property pages for existing (not yours) filter, for use with OleCreatePropertyFrame
API, but other conbinations are doable:
- custom property page for your filter, with/without
OleCreatePropertyFrame
API - custom property page for existing filter, without
OleCreatePropertyFrame
API - custom UI for existing filter
UPD. Another thing is that some standard pages might be filter specific, and other might be pin specific. Standard API shows pages for one object only, that is either filter or pin. In order to combine pages within one sheet, with standard API, you need to enumerate property pages on all objects, merge into single array, then create a fake COM object which forwards IUnknown::QueryInterface
calls to specific COM objects (or just iterate through through array until you find first one implementing requested interface) and then use OleCreatePropertyFrame
API against this proxy COM object. This can gather pages under one sheet/dialog.