62 lines
1.7 KiB
C++
62 lines
1.7 KiB
C++
#include <vidcap/srcdlg.hpp>
|
|
#include <vidcap/vidcap.hpp>
|
|
#include <vidcap/rsrc.hpp>
|
|
|
|
LRESULT SourceDialog::perform(void)
|
|
{
|
|
mDriverIndex=-1;
|
|
::DialogBoxParam(processInstance(),(LPSTR)"SOURCE",mhParent,(DLGPROC)DWindow::DlgProc,(LONG)((DWindow*)this));
|
|
return mDriverIndex;
|
|
}
|
|
|
|
CallbackData::ReturnType SourceDialog::initDialogHandler(CallbackData &/*someCallbackData*/)
|
|
{
|
|
mListBox=new Control(getItem(SOURCE_LIST),SOURCE_LIST,FALSE);
|
|
mListBox.disposition(PointerDisposition::Delete);
|
|
getDrivers();
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
CallbackData::ReturnType SourceDialog::dialogCodeHandler(CallbackData &/*someCallbackData*/)
|
|
{
|
|
return (CallbackData::ReturnType)DLGC_WANTALLKEYS;
|
|
}
|
|
|
|
CallbackData::ReturnType SourceDialog::commandHandler(CallbackData &someCallbackData)
|
|
{
|
|
switch(someCallbackData.wmCommandID())
|
|
{
|
|
case IDOK :
|
|
getDriverIndex();
|
|
endDialog(TRUE);
|
|
break;
|
|
case IDCANCEL :
|
|
mDriverIndex=-1;
|
|
endDialog(FALSE);
|
|
break;
|
|
case SOURCE_LIST :
|
|
if(LBN_DBLCLK==someCallbackData.wmCommandCommand()){getDriverIndex();endDialog(true);}
|
|
break;
|
|
}
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
void SourceDialog::getDrivers(void)
|
|
{
|
|
Block<DriverInfo> drivers;
|
|
|
|
mListBox->sendMessage(LB_RESETCONTENT,0,0L);
|
|
VidCap::getDrivers(drivers);
|
|
for(int index=0;index<drivers.size();index++)
|
|
{
|
|
mListBox->sendMessage(LB_INSERTSTRING,-1,(LPARAM)String(drivers[index].driverName()+String("[")+ drivers[index].driverVersion()+String("]")).str());
|
|
}
|
|
if(drivers.size())mListBox->sendMessage(LB_SETCURSEL,0,0);
|
|
}
|
|
|
|
LRESULT SourceDialog::getDriverIndex(void)
|
|
{
|
|
if(mListBox->sendMessage(LB_GETCOUNT,0,0))return mDriverIndex=mListBox->sendMessage(LB_GETCURSEL,0,0L);
|
|
else return mDriverIndex=-1;
|
|
}
|