// CPlayApp message handlers
int CPlayApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
WSACleanup();
CoUninitialize();
return CWinApp::ExitInstance();
}
void CPlayApp::AddDevToMenu()
{
CVideoPlay vPlay;
CStringList DevList;
int i;
CString DevName;
vPlay.FindDevice(DevList);
for(i=0;i<DevList.GetCount();i++)
{
DevName=DevList.GetHead();
CMenu* Pmenu=m_pMainWnd->GetMenu();
CMenu* Smenu=Pmenu->GetSubMenu(0);
Smenu->AppendMenu(MF_STRING,MENU_VDEVICE0 + i,DevName);
Smenu->DeleteMenu(0,MF_BYPOSITION);
Smenu->EnableMenuItem(MENU_VDEVICE0 + i,MF_ENABLED||MF_BYCOMMAND);
}
/* HRESULT hr;
int uIndex=0;
ICreateDevEnum *pCreateDevEnum;
hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
IID_ICreateDevEnum, (void**)&pCreateDevEnum);
IEnumMoniker *pEm;
hr = pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,
&pEm, 0);
HELPER_RELEASE(pCreateDevEnum);
pEm->Reset();
ULONG cFetched;
IMoniker *pM;
while(hr = pEm->Next(1, &pM, &cFetched), hr==S_OK)
{
IPropertyBag *pBag;
hr = pM->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pBag);
if(SUCCEEDED(hr))
{
VARIANT var;
var.vt = VT_BSTR;
hr = pBag->Read(L"FriendlyName", &var, NULL);
if (hr == NOERROR)
{
char achName[80];
WideCharToMultiByte(CP_ACP, 0, var.bstrVal, -1, achName, 80,NULL, NULL);
CMenu* Pmenu=m_pMainWnd->GetMenu();
CMenu* Smenu=Pmenu->GetSubMenu(0);
Smenu->AppendMenu(MF_STRING,MENU_VDEVICE0 + uIndex,achName);
Smenu->DeleteMenu(0,MF_BYPOSITION);
Smenu->EnableMenuItem(MENU_VDEVICE0 + uIndex,MF_ENABLED||MF_BYCOMMAND);
SysFreeString(var.bstrVal);
}
HELPER_RELEASE(pBag);