选择ltmfPlay c++对象渲染器的例子

下面的例子显示了如何枚举并选择ltmfPlay对象渲染器。

# include“ltmf.h”# include“resource.h”# include“tchar.h”# include“文件”实例句柄g_hInstance;/ /应用程序实例句柄IltmfPlay * g_pPlay;/ /转换对象的接口指针/ // / BuildRendererList/ /填充列表框的内容匹配集合/ // / pRenderers =渲染器集合的接口指针/ / hwndListBox = listbox窗口句柄/ /无效BuildRendererList (IltmfRenderers * pRenderers HWND hwndListBox){我;计数;int选择= 1;/ /重置列表框的内容SendMessage (hwndListBox LB_RESETCONTENT 0,0);/ /得到集合的项数pRenderers - > get_Count(数);(i = 0;我<数;我+ +){IltmfRenderer * pRenderer;型型;TCHAR sz [256];int指数;VARIANT_BOOL f;/ /检索项集合pRenderers - >项目(我&pRenderer);/ /得到可显示的名字pRenderer - > get_FriendlyName(型);/ /从unicode转换_stprintf(深圳_T (“% ls”),型);/ /免费的名字SysFreeString(型);/ /将名称添加到列表框指数= SendMessage (hwndListBox LB_ADDSTRING 0, (LPARAM) (LPCTSTR)深圳);/ /关联列表框项集合的项的索引SendMessage (hwndListBox LB_SETITEMDATA,指数i);/ /记住这个列表框项,如果是在集合中选择pRenderer - > get_Selected (f);如果(f)选择=我;/ /免费收藏项目pRenderer - >释放();}/ /选择适当的列表框项(i = 0;我<数;我+ +){如果(选择= = ()SendMessage (hwndListBox LB_GETITEMDATA,我,0)){SendMessage (hwndListBox LB_SETCURSEL,我,0);打破;}}}/ // / RendererSelectionChanged/ /打电话反映的变化列表框的选择/ // / pRenderers =渲染器集合的接口指针/ / hwndListBox = listbox窗口句柄/ /无效RendererSelectionChanged (IltmfRenderers * pRenderers HWND hwndListBox){int指数;项;int我;int计数;HRESULT人力资源;/ /得到当前的索引列表框的选择指数= (int)SendMessage (hwndListBox LB_GETCURSEL 0,0);如果(指数< 0){/ /明确的选择pRenderers - > put_Selection (1);}其他的{/ /获取集合项的索引项= ()SendMessage (hwndListBox, LB_GETITEMDATA、索引0);/ /选择项# ifdef _DEBUG{IltmfRenderer * pRenderer;pRenderers - >项目(项目、&pRenderer);hr = pRenderer - > put_Selected (VARIANT_TRUE);pRenderer - >释放();}#其他的hr = pRenderers - > put_Selection(项);# endif/ /如果新的选择失败,我们需要迫使列表框匹配实际的选择如果(失败(人力资源){/ /得到真正的选择pRenderers - > get_Selection(项);/ /找到匹配的列表框项数= (int)SendMessage (hwndListBox LB_GETCOUNT 0,0);(i = 0;我<数;我+ +){如果(项目= = ()SendMessage (hwndListBox LB_GETITEMDATA,我,0)){SendMessage (hwndListBox LB_SETCURSEL,我,0);打破;}}}}}/ // / RefreshRendererList/ /当完全重建集合/ // / pRenderers =渲染器集合的接口指针/ / hwndListBox = listbox窗口句柄/ /无效RefreshRendererList (IltmfRenderers * pRenderers HWND hwndListBox){IltmfRenderer * pRenderer;项;型型;/ /获取当前选中的项pRenderers - > get_Selection(项);如果(项目> = 0){/ /得到它独特的名字pRenderers - >项目(项目、&pRenderer);pRenderer - > get_Name(型);pRenderer - >释放();}其他的{型=零;}/ /重建集合pRenderers - > Refresh ();如果(型){/ /找到先前选定的项pRenderers - >找到(型、项目);/ /当前的选择如果(项目> = 0)pRenderers - > put_Selection(项);SysFreeString(型);}/ /重建列表框BuildRendererList (pRenderers hwndListBox);}/ // / RendererDlgProc/ /选择对象渲染器/ /BOOL调RendererDlgProc (HWND HWND,使用UINT味精,按钮按钮,LPARAM LPARAM){IltmfRenderers * pRenderers;开关(味精){情况下WM_INITDIALOG:/ /初始化音频渲染器列表框g_pPlay - > get_AudioRenderers (&pRenderers);BuildRendererList (pRenderers GetDlgItem (hwnd, IDC_AUDIODEVICES));pRenderers - >释放();返回真正的;打破;情况下WM_COMMAND:开关(LOWORD(按钮){情况下IDC_REFRESHAUDIODEVICES:/ /刷新音频渲染器列表框g_pPlay - > get_AudioRenderers (&pRenderers);RefreshRendererList (pRenderers GetDlgItem (hwnd, IDC_AUDIODEVICES));pRenderers - >释放();返回真正的;打破;情况下IDC_AUDIODEVICES:如果(HIWORD(按钮)= = LBN_SELCHANGE){/ /选择音频渲染器g_pPlay - > get_AudioRenderers (&pRenderers);RendererSelectionChanged (pRenderers GetDlgItem (hwnd, IDC_AUDIODEVICES));pRenderers - >释放();}打破;情况下IDOK:EndDialog (hwnd, IDOK);返回真正的;打破;}打破;}返回虚假的;}intAPIENTRY . WinMain(实例句柄实例句柄,实例句柄hPrevInstance,[lpCmdLine,intnCmdShow){HRESULT人力资源;g_hInstance =实例句柄;/ /初始化COM库hr = CoInitialize(空);如果(失败(人力资源)转到错误;/ /创建对象转换hr = CoCreateInstance (CLSID_ltmfPlay, NULL, CLSCTX_INPROC_SERVER IID_IltmfPlay (无效* *)&g_pPlay);如果(失败(人力资源)转到错误;对话框(g_hInstance LPCTSTR IDD_DEVICEDLG, NULL, RendererDlgProc);错误:/ /清理如果(g_pPlay)g_pPlay - >释放();CoUninitialize ();返回0;}

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