选择ltmfCapture对象处理器c++的示例

下面的例子显示了如何枚举并选择ltmfCapture对象处理器。

# include“ltmf.h”# include“resource.h”# include“tchar.h”# include“文件”实例句柄g_hInstance;/ /应用程序实例句柄IltmfCapture * g_pCapture;/ /捕获对象的接口指针/ // / BuildProcessorList/ /填充注册处理器列表框来匹配集合的内容/ // / pProcessors =处理器集合的接口指针/ / hwndListBox = listbox窗口句柄/ /无效BuildProcessorList (IltmfProcessors * pProcessors HWND hwndListBox){我;计数;/ /重置列表框的内容SendMessage (hwndListBox LB_RESETCONTENT 0,0);/ /得到集合的项数pProcessors - > get_Count(数);(i = 0;我<数;我+ +){IltmfProcessor * pProcessor;型型;TCHAR sz [256];int指数;/ /检索项集合pProcessors - >项目(我&pProcessor);/ /得到可显示的名字pProcessor - > get_FriendlyName(型);/ /从unicode转换_stprintf(深圳_T (“% ls”),型);/ /免费的名字SysFreeString(型);/ /将名称添加到列表框指数= SendMessage (hwndListBox LB_ADDSTRING 0, (LPARAM) (LPCTSTR)深圳);/ /关联列表框项集合的项的索引SendMessage (hwndListBox LB_SETITEMDATA,指数i);/ /免费收藏项目pProcessor - >释放();}}/ // / BuildSelectedProcessorList/ /填充选择的处理器列表框来匹配集合的内容/ // / pSelProcessors =选中处理器集合的接口指针/ / hwndSelListBox =选中列表框窗口句柄/ /无效BuildSelectedProcessorList (IltmfProcessors * pSelProcessors HWND hwndSelListBox){我;计数;/ /重置列表框的内容SendMessage (hwndSelListBox LB_RESETCONTENT 0,0);/ /得到集合的项数pSelProcessors - > get_Count(数);(i = 0;我<数;我+ +){IltmfProcessor * pProcessor;型型;TCHAR sz [256];/ /检索项集合pSelProcessors - >项目(我&pProcessor);/ /得到可显示的名字pProcessor - > get_FriendlyName(型);/ /从unicode转换_stprintf(深圳_T (“% ls”),型);/ /免费的名字SysFreeString(型);/ /将名称添加到列表框SendMessage (hwndSelListBox LB_ADDSTRING 0, (LPARAM) (LPCTSTR)深圳);/ /免费收藏项目pProcessor - >释放();}/ /添加一个空白的条目的列表并选择它SendMessage (hwndSelListBox LB_ADDSTRING 0, (LPARAM)(值)_T (”“));SendMessage (hwndSelListBox LB_SETCURSEL,计数,0);}/ // / RemoveSelectedProcessor/ /删除当前选择的处理器/ // / pSelProcessors =选中处理器集合的接口指针/ / hwndSelListBox =选中列表框窗口句柄/ /无效RemoveSelectedProcessor (IltmfProcessors * pSelProcessors HWND hwndSelListBox){int指数;int计数;/ /选中处理器列表框项的数量数= (int)SendMessage (hwndSelListBox LB_GETCOUNT 0,0);/ /删除点来自所选处理器列表框指数= (int)SendMessage (hwndSelListBox LB_GETCURSEL 0,0);/ /如果没有一个有效的处理器,然后返回如果(指数< 0 | |指数> =(数- 1))返回;/ /删除选择的处理器处理器集合pSelProcessors - >删除(指数);/ /删除选中处理器列表框的名字SendMessage (hwndSelListBox, LB_DELETESTRING、索引0);/ /选择列表框中的下一个项目SendMessage (hwndSelListBox, LB_SETCURSEL、索引0);}/ // / RemoveAllSelectedProcessors/ /删除所有选择的处理器/ // / pSelProcessors =选中处理器集合的接口指针/ / hwndSelListBox =选中列表框窗口句柄/ /无效RemoveAllSelectedProcessors (IltmfProcessors * pSelProcessors HWND hwndSelListBox){pSelProcessors - > RemoveAll ();BuildSelectedProcessorList (pSelProcessors hwndSelListBox);}/ // / InsertSelectedProcessor/ /将当前选中的十一五处理器插入te选择处理器集合/ // / pProcessors =注册处理器集合的接口指针/ / hwndListBox =注册listbox窗口句柄/ / pSelProcessors =选中处理器集合的接口指针/ / hwndSelListBox =选中列表框窗口句柄/ /无效InsertSelectedProcessor (IltmfProcessors * pProcessors HWND hwndListBox,IltmfProcessors * pSelProcessors HWND hwndSelListBox){int指数;intselindex;项;IltmfProcessor * pProcessor;型型;TCHAR sz [256];/ /注册处理器列表框的选择指数= (int)SendMessage (hwndListBox LB_GETCURSEL 0,0);如果(指数< 0)返回;/ /获取集合项的索引项= ()SendMessage (hwndListBox, LB_GETITEMDATA、索引0);/ /获得实际的项目pProcessors - >项目(项目、&pProcessor);/ /获得指定的处理器列表框的插入点selindex = (int)SendMessage (hwndSelListBox LB_GETCURSEL 0,0);/ /插入处理器选择处理器集合pSelProcessors - >添加(pProcessor selindex);/ /得到可显示的名称pProcessor - > get_FriendlyName(型);/ /释放处理器pProcessor - >释放();/ /从unicode转换_stprintf(深圳_T (“% ls”),型);/ /免费的名字SysFreeString(型);/ /插入名称选择的处理器列表框SendMessage (hwndSelListBox、LB_INSERTSTRING selindex (LPARAM) (LPCTSTR)深圳);}/ // / RefreshProcessorList/ /被完全重建集合/ // / pProcessors =处理器集合的接口指针/ / hwndListBox = listbox窗口句柄/ /无效RefreshProcessorList (IltmfProcessors * pProcessors HWND hwndListBox){IltmfProcessor * pProcessor;项;型型;我;计数;/ /获取当前选中的项我= (int)SendMessage (hwndListBox LB_GETCURSEL 0,0);如果(我> = 0){项= ()SendMessage (hwndListBox LB_GETITEMDATA,我,0);/ /得到它独特的名字pProcessors - >项目(项目、&pProcessor);pProcessor - > get_Name(型);pProcessor - >释放();}其他的{型=零;}/ /重建集合pProcessors - > Refresh ();/ /重建列表框BuildProcessorList (pProcessors hwndListBox);如果(型){/ /找到先前选定的项pProcessors - >找到(型、项目);/ /当前的选择如果(项目> = 0){pProcessors - > get_Count(数);/ /选择适当的列表框项(i = 0;我<数;我+ +){如果(项目= = ()SendMessage (hwndListBox LB_GETITEMDATA,我,0)){SendMessage (hwndListBox LB_SETCURSEL,我,0);打破;}}}SysFreeString(型);}}/ // / ProcessorSelectionChanged/ /注册时调用处理器选择已经改变了/ // / pProcessors =处理器集合的接口指针/ / hwndListBox = listbox窗口句柄/ / hwndAddBtn =添加按钮窗口句柄/ /无效ProcessorSelectionChanged (IltmfProcessors * pProcessors HWND hwndListBox, HWND hwndAddBtn){int指数;/ /获取当前选中列表框项指数= (int)SendMessage (hwndListBox LB_GETCURSEL 0,0);/ /启用添加,如果将被选中EnableWindow (hwndAddBtn指数> = 0);}/ // / SelectedProcessorSelectionChanged/ /选中时调用处理器选择已经改变了/ // / pSelProcessors =处理器集合的接口指针/ / hwndSelListBox = listbox窗口句柄/ / hwndRemoveBtn =删除按钮窗口句柄/ / hwndRemoveAllBtn =删除所有按钮窗口句柄/ / hwndPropBtn =属性按钮窗口句柄/ /无效SelectedProcessorSelectionChanged (IltmfProcessors * pSelProcessors HWND hwndSelListBox, HWND hwndRemoveBtn, HWND hwndRemoveAllBtn, HWND hwndPropBtn){int指数;int计数;BOOL fTransform;VARIANT_BOOL fHasDialog = VARIANT_FALSE;HRESULT人力资源;/ /获取当前选中列表框项指数= (int)SendMessage (hwndSelListBox LB_GETCURSEL 0,0);/ /获得项目总数数= (int)SendMessage (hwndSelListBox LB_GETCOUNT 0,0);/ /这是一个改变吗?fTransform =(指数> = 0 & &指数<(数- 1));/ /启用删除所有按钮,如果有一个变换在列表中EnableWindow (hwndRemoveAllBtn数> 1);/ /启用删除按钮,如果它是一个变换EnableWindow (hwndRemoveBtn fTransform);如果(fTransform){/ /检查的availablility变换属性对话框IltmfProcessor * pProcessor;hr = pSelProcessors - >项目(指数、&pProcessor);如果(成功(人力资源){pProcessor - > HasDialog (ltmfProcessor_Dlg_Properties &fHasDialog);pProcessor - >释放();}}其他的{fHasDialog = VARIANT_FALSE;}/ /启用属性按钮,如果对话框EnableWindow (hwndPropBtn fHasDialog ! = VARIANT_FALSE);}/ // / InvokeProcessorProperties/ /调用当前选择的处理器的属性对话框/ // / pSelProcessors =处理器集合的接口指针/ / hwndSelListBox = listbox窗口句柄/ / hwndParent =父窗口句柄/ /无效InvokeProcessorProperties (IltmfProcessors * pSelProcessors HWND hwndSelListBox, HWND hwndParent){int指数;int计数;IltmfProcessor * pProcessor;HRESULT人力资源;/ /获取当前选中列表框项指数= (int)SendMessage (hwndSelListBox LB_GETCURSEL 0,0);/ /获得项目总数数= (int)SendMessage (hwndSelListBox LB_GETCOUNT 0,0);/ /这是一个改变吗?如果(指数> = 0 & &指数<(数- 1)){/ /调用处理器的对话框hr = pSelProcessors - >项目(指数、&pProcessor);如果(成功(人力资源){pProcessor - > ShowDialog (ltmfProcessor_Dlg_Properties, ()hwndParent);pProcessor - >释放();}}}/ // / ProcessorDlgProc/ /选择对象处理器/ /BOOL调ProcessorDlgProc (HWND HWND,使用UINT味精,按钮按钮,LPARAM LPARAM){IltmfProcessors * pProcessors;IltmfProcessors * pSelProcessors;开关(味精){情况下WM_INITDIALOG:/ /初始化音频处理器列表框g_pCapture - > get_AudioProcessors (&pProcessors);BuildProcessorList (pProcessors GetDlgItem (hwnd, IDC_AUDIOPROCESSORS));ProcessorSelectionChanged (pProcessors GetDlgItem (hwnd, IDC_AUDIOPROCESSORS),GetDlgItem (hwnd, IDC_ADDAUDIOPROCESSOR));pProcessors - >释放();/ /初始化选择的音频处理器列表框g_pCapture - > get_SelectedAudioProcessors (&pSelProcessors);BuildSelectedProcessorList (pSelProcessors GetDlgItem (hwnd, IDC_SELAUDIOPROCESSORS));SelectedProcessorSelectionChanged (pSelProcessors GetDlgItem (hwnd, IDC_SELAUDIOPROCESSORS),GetDlgItem (hwnd, IDC_REMOVEAUDIOPROCESSOR),GetDlgItem (hwnd, IDC_REMOVEALLAUDIOPROCESSORS),GetDlgItem (hwnd, IDC_AUDIOPROCESSORPROPERTIES));pSelProcessors - >释放();/ /初始化视频处理器列表框g_pCapture - > get_VideoProcessors (&pProcessors);BuildProcessorList (pProcessors GetDlgItem (hwnd, IDC_VIDEOPROCESSORS));ProcessorSelectionChanged (pProcessors GetDlgItem (hwnd, IDC_VIDEOPROCESSORS),GetDlgItem (hwnd, IDC_ADDVIDEOPROCESSOR));pProcessors - >释放();/ /初始化选中的视频处理器列表框g_pCapture - > get_SelectedVideoProcessors (&pSelProcessors);BuildSelectedProcessorList (pSelProcessors GetDlgItem (hwnd, IDC_SELVIDEOPROCESSORS));SelectedProcessorSelectionChanged (pSelProcessors GetDlgItem (hwnd, IDC_SELVIDEOPROCESSORS),GetDlgItem (hwnd, IDC_REMOVEVIDEOPROCESSOR),GetDlgItem (hwnd, IDC_REMOVEALLVIDEOPROCESSORS),GetDlgItem (hwnd, IDC_VIDEOPROCESSORPROPERTIES));pSelProcessors - >释放();返回真正的;打破;情况下WM_COMMAND:开关(LOWORD(按钮){情况下IDC_ADDAUDIOPROCESSOR:/ /插入处理器选择音频处理器集合g_pCapture - > get_AudioProcessors (&pProcessors);g_pCapture - > get_SelectedAudioProcessors (&pSelProcessors);InsertSelectedProcessor (pProcessors GetDlgItem (hwnd, IDC_AUDIOPROCESSORS),pSelProcessors GetDlgItem (hwnd, IDC_SELAUDIOPROCESSORS));SelectedProcessorSelectionChanged (pSelProcessors GetDlgItem (hwnd, IDC_SELAUDIOPROCESSORS),GetDlgItem (hwnd, IDC_REMOVEAUDIOPROCESSOR),GetDlgItem (hwnd, IDC_REMOVEALLAUDIOPROCESSORS),GetDlgItem (hwnd, IDC_AUDIOPROCESSORPROPERTIES));pSelProcessors - >释放();pProcessors - >释放();返回真正的;打破;情况下IDC_REMOVEAUDIOPROCESSOR:/ /删除处理器从选中的音频处理器集合g_pCapture - > get_SelectedAudioProcessors (&pSelProcessors);RemoveSelectedProcessor (pSelProcessors GetDlgItem (hwnd, IDC_SELAUDIOPROCESSORS));SelectedProcessorSelectionChanged (pSelProcessors GetDlgItem (hwnd, IDC_SELAUDIOPROCESSORS),GetDlgItem (hwnd, IDC_REMOVEAUDIOPROCESSOR),GetDlgItem (hwnd, IDC_REMOVEALLAUDIOPROCESSORS),GetDlgItem (hwnd, IDC_AUDIOPROCESSORPROPERTIES));pSelProcessors - >释放();返回真正的;打破;情况下IDC_REMOVEALLAUDIOPROCESSORS:/ /删除所有选中的音频处理器g_pCapture - > get_SelectedAudioProcessors (&pSelProcessors);RemoveAllSelectedProcessors (pSelProcessors GetDlgItem (hwnd, IDC_SELAUDIOPROCESSORS));SelectedProcessorSelectionChanged (pSelProcessors GetDlgItem (hwnd, IDC_SELAUDIOPROCESSORS),GetDlgItem (hwnd, IDC_REMOVEAUDIOPROCESSOR),GetDlgItem (hwnd, IDC_REMOVEALLAUDIOPROCESSORS),GetDlgItem (hwnd, IDC_AUDIOPROCESSORPROPERTIES));pSelProcessors - >释放();返回真正的;打破;情况下IDC_REFRESHAUDIOPROCESSORS:/ /重建注册音频处理器集合g_pCapture - > get_AudioProcessors (&pProcessors);RefreshProcessorList (pProcessors GetDlgItem (hwnd, IDC_AUDIOPROCESSORS));ProcessorSelectionChanged (pProcessors GetDlgItem (hwnd, IDC_AUDIOPROCESSORS),GetDlgItem (hwnd, IDC_ADDAUDIOPROCESSOR));pProcessors - >释放();返回真正的;打破;情况下IDC_AUDIOPROCESSORPROPERTIES:/ /调用选择音频处理器的属性对话框g_pCapture - > get_SelectedAudioProcessors (&pSelProcessors);InvokeProcessorProperties (pSelProcessors GetDlgItem (hwnd, IDC_SELAUDIOPROCESSORS) hwnd);pSelProcessors - >释放();返回真正的;打破;情况下IDC_SELAUDIOPROCESSORS:如果(HIWORD(按钮)= = LBN_SELCHANGE){/ /选择改变,更新按钮g_pCapture - > get_SelectedAudioProcessors (&pSelProcessors);SelectedProcessorSelectionChanged (pSelProcessors GetDlgItem (hwnd, IDC_SELAUDIOPROCESSORS),GetDlgItem (hwnd, IDC_REMOVEAUDIOPROCESSOR),GetDlgItem (hwnd, IDC_REMOVEALLAUDIOPROCESSORS),GetDlgItem (hwnd, IDC_AUDIOPROCESSORPROPERTIES));pSelProcessors - >释放();}打破;情况下IDC_AUDIOPROCESSORS:如果(HIWORD(按钮)= = LBN_SELCHANGE){/ /选择改变,更新按钮g_pCapture - > get_AudioProcessors (&pProcessors);ProcessorSelectionChanged (pProcessors GetDlgItem (hwnd, IDC_AUDIOPROCESSORS),GetDlgItem (hwnd, IDC_ADDAUDIOPROCESSOR));pProcessors - >释放();}打破;情况下IDC_ADDVIDEOPROCESSOR:/ /插入处理器选择视频处理器集合g_pCapture - > get_VideoProcessors (&pProcessors);g_pCapture - > get_SelectedVideoProcessors (&pSelProcessors);InsertSelectedProcessor (pProcessors GetDlgItem (hwnd, IDC_VIDEOPROCESSORS),pSelProcessors GetDlgItem (hwnd, IDC_SELVIDEOPROCESSORS));SelectedProcessorSelectionChanged (pSelProcessors GetDlgItem (hwnd, IDC_SELVIDEOPROCESSORS),GetDlgItem (hwnd, IDC_REMOVEVIDEOPROCESSOR),GetDlgItem (hwnd, IDC_REMOVEALLVIDEOPROCESSORS),GetDlgItem (hwnd, IDC_VIDEOPROCESSORPROPERTIES));pSelProcessors - >释放();pProcessors - >释放();返回真正的;打破;情况下IDC_REMOVEVIDEOPROCESSOR:/ /删除处理器从选中的视频处理器集合g_pCapture - > get_SelectedVideoProcessors (&pSelProcessors);RemoveSelectedProcessor (pSelProcessors GetDlgItem (hwnd, IDC_SELVIDEOPROCESSORS));SelectedProcessorSelectionChanged (pSelProcessors GetDlgItem (hwnd, IDC_SELVIDEOPROCESSORS),GetDlgItem (hwnd, IDC_REMOVEVIDEOPROCESSOR),GetDlgItem (hwnd, IDC_REMOVEALLVIDEOPROCESSORS),GetDlgItem (hwnd, IDC_VIDEOPROCESSORPROPERTIES));pSelProcessors - >释放();返回真正的;打破;情况下IDC_REMOVEALLVIDEOPROCESSORS:/ /删除所有选中的视频处理器g_pCapture - > get_SelectedVideoProcessors (&pSelProcessors);RemoveAllSelectedProcessors (pSelProcessors GetDlgItem (hwnd, IDC_SELVIDEOPROCESSORS));SelectedProcessorSelectionChanged (pSelProcessors GetDlgItem (hwnd, IDC_SELVIDEOPROCESSORS),GetDlgItem (hwnd, IDC_REMOVEVIDEOPROCESSOR),GetDlgItem (hwnd, IDC_REMOVEALLVIDEOPROCESSORS),GetDlgItem (hwnd, IDC_VIDEOPROCESSORPROPERTIES));pSelProcessors - >释放();返回真正的;打破;情况下IDC_REFRESHVIDEOPROCESSORS:/ /重建注册视频处理器集合g_pCapture - > get_VideoProcessors (&pProcessors);RefreshProcessorList (pProcessors GetDlgItem (hwnd, IDC_VIDEOPROCESSORS));ProcessorSelectionChanged (pProcessors GetDlgItem (hwnd, IDC_VIDEOPROCESSORS),GetDlgItem (hwnd, IDC_ADDVIDEOPROCESSOR));pProcessors - >释放();返回真正的;打破;情况下IDC_VIDEOPROCESSORPROPERTIES:/ /调用所选视频处理器的属性对话框g_pCapture - > get_SelectedVideoProcessors (&pSelProcessors);InvokeProcessorProperties (pSelProcessors GetDlgItem (hwnd, IDC_SELVIDEOPROCESSORS) hwnd);pSelProcessors - >释放();返回真正的;打破;情况下IDC_SELVIDEOPROCESSORS:如果(HIWORD(按钮)= = LBN_SELCHANGE){/ /选择改变,更新按钮g_pCapture - > get_SelectedVideoProcessors (&pSelProcessors);SelectedProcessorSelectionChanged (pSelProcessors GetDlgItem (hwnd, IDC_SELVIDEOPROCESSORS),GetDlgItem (hwnd, IDC_REMOVEVIDEOPROCESSOR),GetDlgItem (hwnd, IDC_REMOVEALLVIDEOPROCESSORS),GetDlgItem (hwnd, IDC_VIDEOPROCESSORPROPERTIES));pSelProcessors - >释放();}打破;情况下IDC_VIDEOPROCESSORS:如果(HIWORD(按钮)= = LBN_SELCHANGE){/ /选择改变,更新按钮g_pCapture - > get_VideoProcessors (&pProcessors);ProcessorSelectionChanged (pProcessors GetDlgItem (hwnd, IDC_VIDEOPROCESSORS),GetDlgItem (hwnd, IDC_ADDVIDEOPROCESSOR));pProcessors - >释放();}打破;情况下IDOK:EndDialog (hwnd, IDOK);返回真正的;打破;}打破;}返回虚假的;}intAPIENTRY . WinMain(实例句柄实例句柄,实例句柄hPrevInstance,[lpCmdLine,intnCmdShow){HRESULT人力资源;g_hInstance =实例句柄;/ /初始化COM库hr = CoInitialize(空);如果(失败(人力资源)转到错误;/ /创建捕获对象hr = CoCreateInstance (CLSID_ltmfCapture, NULL, CLSCTX_INPROC_SERVER IID_IltmfCapture (无效* *)&g_pCapture);如果(失败(人力资源)转到错误;对话框(g_hInstance LPCTSTR IDD_PROCESSORDLG, NULL, ProcessorDlgProc);错误:/ /清理如果(g_pCapture)g_pCapture - >释放();CoUninitialize ();返回0;}

LEADTOOLS媒体基金会C API的帮助
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2022领先的技术公司。保留所有权利。