Files
Work/vidcap/srcdlg.cpp
2024-08-07 09:16:27 -04:00

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;
}