TdecoderOptionsPage::TdecoderOptionsPage(TffdshowPageDec *Iparent): TconfPageDecVideo(Iparent) { dialogId = IDD_DECODEROPTIONS; inPreset = 1; helpURL = _l("http://ffdshow-tryout.sourceforge.net/wiki/video:decoder_options"); static const TbindCheckbox<TdecoderOptionsPage> chb[] = { IDC_CHB_DROP_ON_DELAY, IDFF_dropOnDelay, NULL, IDC_CHB_H264_SKIP_ON_DELAY, IDFF_h264skipOnDelay, NULL, IDC_CHB_SOFT_TELECINE, IDFF_softTelecine, NULL, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindEditInt<TdecoderOptionsPage> edInt[] = { IDC_ED_NUMTHREADS, 1, 8, IDFF_numLAVCdecThreads, NULL, IDC_ED_DROP_ON_DELAY_TIME, 0, 20000, IDFF_dropOnDelayTime, NULL, IDC_ED_H264SKIP_ON_DELAY_TIME, 0, 20000, IDFF_h264skipOnDelayTime, NULL, 0, NULL, NULL }; bindEditInts(edInt); static const TbindCombobox<TdecoderOptionsPage> cbx[] = { IDC_CBX_IDCT, IDFF_idct, BINDCBX_SEL, NULL, 0 }; bindComboboxes(cbx); static const TbindButton<TdecoderOptionsPage> bt[] = { IDC_BT_QUANTMATRIX_EXPORT, &TdecoderOptionsPage::onMatrixExport, 0, NULL }; bindButtons(bt); }
TdctPage::TdctPage(TffdshowPageDec *Iparent, const TfilterIDFF *idff): TconfPageDecVideo(Iparent, idff) { resInter = IDC_CHB_DCT; static const TbindEditReal<TdctPage> edReal[] = { IDC_ED_DCT0, 0.0, 3.0, IDFF_dct0, 1000.0, NULL, IDC_ED_DCT1, 0.0, 3.0, IDFF_dct1, 1000.0, NULL, IDC_ED_DCT2, 0.0, 3.0, IDFF_dct2, 1000.0, NULL, IDC_ED_DCT3, 0.0, 3.0, IDFF_dct3, 1000.0, NULL, IDC_ED_DCT4, 0.0, 3.0, IDFF_dct4, 1000.0, NULL, IDC_ED_DCT5, 0.0, 3.0, IDFF_dct5, 1000.0, NULL, IDC_ED_DCT6, 0.0, 3.0, IDFF_dct6, 1000.0, NULL, IDC_ED_DCT7, 0.0, 3.0, IDFF_dct7, 1000.0, NULL, 0 }; bindEditReals(edReal); static const TbindRadiobutton<TdctPage> rbt[] = { IDC_RBT_DCT_COEFFS, IDFF_dctMode, 0, NULL, IDC_RBT_DCT_H263 , IDFF_dctMode, 1, NULL, IDC_RBT_DCT_MPEG , IDFF_dctMode, 2, NULL, 0, 0, 0, NULL }; bindRadioButtons(rbt); static const TbindTrackbar<TdctPage> htbr[] = { IDC_TBR_DCT_QUANT, IDFF_dctQuant, &TdctPage::quant2dlg, 0, 0, NULL }; bindHtracks(htbr); static const TbindButton<TdctPage> bt[] = { IDC_BT_DCT_MPEG, &TdctPage::onMatrix, 0, NULL }; bindButtons(bt); }
TkeysPage::TkeysPage(TffdshowPageDec *Iparent): TconfPageDec(Iparent, NULL, 0) { dialogId = IDD_KEYS; idffInter = IDFF_isKeys; resInter = IDC_CHB_KEYS; helpURL = _l("Keyboard+and+remote+control.html"); static const TbindCheckbox<TkeysPage> chb[] = { IDC_CHB_KEYS_ALWAYS, IDFF_keysAlways, NULL, IDC_CHB_KEYS_SHORTOSD, IDFF_keysShortOsd, NULL, IDC_CHB_REMOTE, IDFF_isRemote, NULL, IDC_CHB_REMOTE_ACCEPTKEYS, IDFF_remoteAcceptKeys, NULL, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindRadiobutton<TkeysPage> rbt[] = { IDC_RBT_REMOTE_FFDSHOW, IDFF_remoteMessageMode, 0, NULL, IDC_RBT_REMOTE_USER, IDFF_remoteMessageMode, 1, NULL, 0, 0, 0, NULL }; bindRadioButtons(rbt); static const TbindEditInt<TkeysPage> edInt[] = { IDC_ED_KEYS_SEEK1, 1, 10000, IDFF_keysSeek1, NULL, IDC_ED_KEYS_SEEK2, 1, 10000, IDFF_keysSeek2, NULL, IDC_ED_REMOTE_USER, 1, int(1 << 30), IDFF_remoteMessageUser, NULL, 0 }; bindEditInts(edInt); static const TbindButton<TkeysPage> bt[] = { IDC_BT_REMOTE_GIRDER, &TkeysPage::onGirder, 0, NULL }; bindButtons(bt); }
TOSDpageDec::TOSDpageDec(TffdshowPageDec *Iparent, const TfilterIDFF *idff): TconfPageDec(Iparent, idff, 0) { dialogId = IDD_OSD; idffInter = IDFF_isOSD; resInter = IDC_CHB_OSD; static const TbindCheckbox<TOSDpageDec> chb[] = { IDC_CHB_OSD_SAVE, IDFF_OSDisSave, &TOSDpageDec::save2dlg, IDC_CHB_OSD_IS_AUTO_HIDE, IDFF_OSDisAutoHide, &TOSDpageDec::save2dlg, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindTrackbar<TOSDpageDec> htbr[] = { IDC_TBR_OSD_POSX, IDFF_OSDposX, &TOSDpageDec::pos2dlg, IDC_TBR_OSD_POSY, IDFF_OSDposY, &TOSDpageDec::pos2dlg, 0, 0, NULL }; bindHtracks(htbr); static const TbindCombobox<TOSDpageDec> cbx[] = { IDC_CBX_OSD_USERFORMAT, IDFF_OSD_userformat, BINDCBX_DATA, &TOSDpageDec::cfg2dlg, 0 }; bindComboboxes(cbx); static const TbindButton<TOSDpageDec> bt[] = { IDC_BT_OSD_LINE_UP, &TOSDpageDec::onLineUp, IDC_BT_OSD_LINE_DOWN, &TOSDpageDec::onLineDown, IDC_BT_OSD_SAVE, &TOSDpageDec::onSave, 0, NULL }; bindButtons(bt); }
TavisynthPage::TavisynthPage(TffdshowPageDec *Iparent, const TfilterIDFF *idff): TconfPageDecVideo(Iparent, idff) { resInter = IDC_CHB_AVISYNTH; static const TbindCheckbox<TavisynthPage> chb[] = { IDC_CHB_AVISYNTH_FFDSHOW, IDFF_avisynthFfdshowSource, NULL, IDC_CHB_AVISYNTH_YV12, IDFF_avisynthInYV12, NULL, IDC_CHB_AVISYNTH_YUY2, IDFF_avisynthInYUY2, NULL, IDC_CHB_AVISYNTH_RGB32, IDFF_avisynthInRGB32, NULL, IDC_CHB_AVISYNTH_RGB24, IDFF_avisynthInRGB24, NULL, IDC_CHB_AVISYNTH_BUFFER, IDFF_avisynthEnableBuffering, NULL, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindButton<TavisynthPage> bt[] = { IDC_BT_AVISYNTH_LOAD, &TavisynthPage::onLoad, IDC_BT_AVISYNTH_SAVE, &TavisynthPage::onSave, IDC_BT_AVISYNTH_USECURRENT, &TavisynthPage::onUseCurrent, 0, NULL }; bindButtons(bt); static const TbindCombobox<TavisynthPage> cbx[] = { IDC_CBX_AVISYNTH_PULLDOWN, IDFF_avisynthApplyPulldown, BINDCBX_SEL, NULL, 0 }; bindComboboxes(cbx); }
TinPage::TinPage(TffdshowPageEnc *Iparent):TconfPageEnc(Iparent) { dialogId=IDD_IN; ffproc=NULL; static const int props[]= {IDFF_enc_flip,IDFF_enc_forceIncsp,IDFF_enc_incsp,IDFF_enc_isProc,IDFF_enc_is_lavc_nr,IDFF_enc_lavc_nr,0}; propsIDs=props; static const TbindCheckbox<TinPage> chb[]= { IDC_CHB_PROC,IDFF_enc_isProc,NULL, IDC_CHB_FLIP,IDFF_enc_flip,NULL, IDC_CHB_FORCEINCSP,IDFF_enc_forceIncsp,&TinPage::incsp2dlg, IDC_CHB_DY_INTERLACED,IDFF_isDyInterlaced,&TinPage::interlaced2dlg, IDC_CHB_LAVC_NR,IDFF_enc_is_lavc_nr,&TinPage::lavcnr2dlg, 0,NULL,NULL }; bindCheckboxes(chb); static const TbindEditInt<TinPage> edInt[]= { IDC_ED_DY_INTERLACED,0,4096,IDFF_dyInterlaced,NULL, IDC_ED_LAVC_NR,0,10000,IDFF_enc_lavc_nr,NULL, 0 }; bindEditInts(edInt); static const TbindCombobox<TinPage> cbx[]= { IDC_CBX_INCSP,IDFF_enc_incsp,BINDCBX_DATA,NULL, 0 }; bindComboboxes(cbx); static const TbindButton<TinPage> bt[]= { IDC_BT_PROC_CONFIG,&TinPage::onProcConfig, 0,NULL }; bindButtons(bt); }
TresizeAspectPage::TresizeAspectPage(TffdshowPageDec *Iparent, const TfilterIDFF *idff): TconfPageDecVideo(Iparent, idff, 1) { resInter = IDC_CHB_RESIZE; helpURL = _l("http://ffdshow-tryout.sourceforge.net/wiki/video:resize_aspect"); static const TbindTrackbar<TresizeAspectPage> htbr[] = { IDC_TBR_ASPECT_USER, IDFF_aspectRatio, &TresizeAspectPage::userAspect2dlg, IDC_TBR_HWOVERLAY_ASPECT, IDFF_hwOverlayAspect, &TresizeAspectPage::aspect2dlg, 0, 0, NULL }; bindHtracks(htbr); static const TbindRadiobutton<TresizeAspectPage> rbt[] = { IDC_RBT_RESIZE_MODE_SIZE, IDFF_resizeMode, 0, &TresizeAspectPage::onModeChange, IDC_RBT_RESIZE_MODE_ASPECT, IDFF_resizeMode, 1, &TresizeAspectPage::onModeChange, IDC_RBT_RESIZE_MOD_16, IDFF_resizeMode, 2, &TresizeAspectPage::onModeChange, IDC_RBT_RESIZE_MODE_MULT, IDFF_resizeMode, 3, &TresizeAspectPage::onModeChange, IDC_RBT_RESIZE_MODE_SIZE_H, IDFF_resizeMode, 4, &TresizeAspectPage::onModeChange, IDC_RBT_RESIZE_MODE_SCREEN_RES, IDFF_resizeMode, 5, &TresizeAspectPage::onModeChange, IDC_RBT_ASPECT_NO, IDFF_isAspect, 0, NULL, IDC_RBT_ASPECT_KEEP, IDFF_isAspect, 1, NULL, IDC_RBT_ASPECT_USER, IDFF_isAspect, 2, NULL, IDC_RBT_RESIZE_ALWAYS, IDFF_resizeIf, 0, NULL, IDC_RBT_RESIZE_IFSIZE, IDFF_resizeIf, 1, NULL, IDC_RBT_RESIZE_IFNUMBEROFPIXELS, IDFF_resizeIf, 2, NULL, 0, 0, 0, NULL }; bindRadioButtons(rbt); static const TbindEditInt<TresizeAspectPage> edInt[] = { IDC_ED_RESIZEA1, 1, 10000, IDFF_resizeA1, NULL, IDC_ED_RESIZEA2, 1, 10000, IDFF_resizeA2, NULL, IDC_ED_RESIZE_IFX, 0, 16384, IDFF_resizeIfXval, NULL, IDC_ED_RESIZE_IFY, 0, 16384, IDFF_resizeIfYval, NULL, IDC_ED_RESIZE_IFPIX, 0, 16384 * 16384, IDFF_resizeIfPixVal, NULL, IDC_ED_RESIZE_MOD_16, 1, 128, IDFF_resizeMultOf, NULL, IDC_ED_RESIZE_OUT_DEVICE_A1, 1, 10000, IDFF_resizeOutDeviceA1, NULL, IDC_ED_RESIZE_OUT_DEVICE_A2, 1, 10000, IDFF_resizeOutDeviceA2, NULL, 0 }; bindEditInts(edInt); static const TbindEditReal<TresizeAspectPage> edReal[] = { IDC_ED_RESIZE_MULT, 0.001, 1000.0, IDFF_resizeMult1000, 1000.0, NULL, IDC_ED_RESIZE_USER_ASPECT, 0.05, 5, IDFF_aspectRatio, 65536, NULL, 0 }; bindEditReals(edReal); static const TbindButton<TresizeAspectPage> bt[] = { IDC_BT_RESIZE_SIZE_MENU, &TresizeAspectPage::onResizeSizeMenu, IDC_BT_RESIZE_MOD_16, &TresizeAspectPage::onResizeMulfOfMenu, IDC_BT_RESIZE_ASPECT_MENU, &TresizeAspectPage::onResizeAspectMenu, IDC_BT_RESIZE_PIX_MENU, &TresizeAspectPage::onResizePixMenu, IDC_BT_RESIZE_USER_ASPECT, &TresizeAspectPage::onResizeManualArMenu, 0, NULL }; static const TbindCheckbox<TresizeAspectPage> chb[] = { IDC_CHB_SAR_INTERNALLY, IDFF_resizeSARinternally, &TresizeAspectPage::resize2dlg, 0, NULL, NULL }; bindCheckboxes(chb); bindButtons(bt); }
//================================= TcompatibilityList ================================== TcompatibilityList::TcompatibilityList(IffdshowBase *Ideci, HWND Iparent, int x, int y, int target): TdlgWindow(IDD_COMPATIBILITY, Ideci), parent(Iparent), deciD(Ideci) { this->x = x; this->y = y; IDFF_target = target; static const TbindButton<TcompatibilityList> bt[] = { IDC_BT_ADDCOMPATIBLEFILE, &TcompatibilityList::onAddFile, IDC_BT_COMP_RESET, &TcompatibilityList::onReset, 0, NULL }; bindButtons(bt); }
TquantTablesPageBase::TquantTablesPageBase(IffdshowBase *Ideci):Twindow(Ideci) { dialogId=IDD_QUANT_TABLES_BASE; static const TbindButton<TquantTablesPageBase> bt[]= { IDC_BT_QUANT_TABLE_LOAD,&TquantTablesPageBase::onLoad, IDC_BT_QUANT_TABLE_SAVE,&TquantTablesPageBase::onSave, 0,NULL }; bindButtons(bt); static const TbindCombobox<TquantTablesPageBase> cbx[]= { IDC_CBX_QUANT_TABLE,0,BINDCBX_NONE,&TquantTablesPageBase::table2dlg, 0 }; bindComboboxes(cbx); }
TffdshowPageDec::TffdshowPageDec(LPUNKNOWN pUnk, HRESULT *phr, const wchar_t *ItitleW, const char_t *name, int dialogId, int resstr, bool IhasFull): TffdshowPageBase(pUnk, phr, ItitleW, name, dialogId, resstr), hasFull(IhasFull), dragpage(NULL) { page = NULL; typedef void(Twindow::*TonClick)(void); static const TbindButton<Twindow> bt[] = { IDC_BT_RESET, (TonClick)&TffdshowPageDec::onReset, // HACK IDC_BT_RESETORDER, (TonClick)&TffdshowPageDec::onResetOrder, 0, NULL }; bindButtons(bt); }
TgraphPage::TgraphPage(TffdshowPageEnc *Iparent): TconfPageEnc(Iparent) { dialogId = IDD_GRAPH; static const TbindCheckbox<TgraphPage> chb[] = { IDC_CHB_GRAPH, IDFF_enc_showGraph, &TgraphPage::graph2dlg, IDC_CHB_OUTPUTDEBUG, IDFF_outputdebug, NULL, IDC_CHB_OUTPUTDEBUGFILE, IDFF_outputdebugfile, &TgraphPage::debug2dlg, IDC_CHB_ERRORBOX, IDFF_errorbox, NULL, IDC_CHB_STATS_PSNR, IDFF_enc_psnr, NULL, IDC_CHB_ADDTOROT, IDFF_addToROT, NULL, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindButton<TgraphPage> bt[] = { IDC_BT_OUTPUTDEBUGFILE, &TgraphPage::onDebugoutputfile, 0, NULL }; bindButtons(bt); }
ToutPage::ToutPage(TffdshowPageEnc *Iparent):TconfPageEnc(Iparent),parentE(Iparent) { dialogId=IDD_OUT; static const int props[]= {IDFF_enc_storeAVI,IDFF_enc_storeExt,IDFF_enc_storeExtFlnm,IDFF_enc_muxer,0}; propsIDs=props; static const TbindCheckbox<ToutPage> chb[]= { IDC_CHB_STORE_EXTERNAL,IDFF_enc_storeExt,&ToutPage::out2dlg, IDC_CHB_STORE_AVI,IDFF_enc_storeAVI,NULL, 0,NULL,NULL }; bindCheckboxes(chb); static const TbindCombobox<ToutPage> cbx[]= { IDC_CBX_MUXER,IDFF_enc_muxer,BINDCBX_SEL,NULL, 0 }; bindComboboxes(cbx); static const TbindButton<ToutPage> bt[]= { IDC_BT_STORE_EXTERNAL,&ToutPage::onStoreExternal, 0,NULL }; bindButtons(bt); }
TbitmapPage::TbitmapPage(TffdshowPageDec *Iparent,const TfilterIDFF *idff):TconfPageDecVideo(Iparent,idff) { resInter=IDC_CHB_BITMAP; static const TbindTrackbar<TbitmapPage> htbr[]= { IDC_TBR_BITMAP_POSX,IDFF_bitmapPosx,&TbitmapPage::pos2dlg, IDC_TBR_BITMAP_POSY,IDFF_bitmapPosy,&TbitmapPage::pos2dlg, IDC_TBR_BITMAP_OPACITY,IDFF_bitmapStrength,&TbitmapPage::opacity2dlg, 0,0,NULL }; bindHtracks(htbr); static const TbindCombobox<TbitmapPage> cbx[]= { IDC_CBX_BITMAP_ALIGN,IDFF_bitmapAlign,BINDCBX_SEL,NULL, IDC_CBX_BITMAP_MODE,IDFF_bitmapMode,BINDCBX_SEL,NULL, 0 }; bindComboboxes(cbx); static const TbindButton<TbitmapPage> bt[]= { IDC_BT_BITMAP_FLNM,&TbitmapPage::onFlnm, 0,NULL }; bindButtons(bt); }
TlevelsPage::TlevelsPage(TffdshowPageDec *Iparent,const TfilterIDFF *idff):TconfPageDecVideo(Iparent,idff),filter(NULL) { resInter=IDC_CHB_LEVELS; helpURL=_l("levels.html"); curvesflnm[0]='\0'; static const TbindCheckbox<TlevelsPage> chb[]= { IDC_CHB_LEVELS_ONLYLUMA,IDFF_levelsOnlyLuma,&TlevelsPage::levels2dlg, IDC_CHB_LEVELS_SHOW_HISTOGRAM,IDFF_buildHistogram,NULL, IDC_CHB_LEVELS_SHOW_HISTOGRAM_FULL,IDFF_levelsFullY,&TlevelsPage::map2dlg, IDC_CHB_LEVELS_INPUT_AUTO,IDFF_levelsInAuto,NULL, IDC_CHB_LEVELS_RGB,IDFF_levelsForceRGB,&TlevelsPage::mode2dlg, 0,NULL,NULL }; bindCheckboxes(chb); static const TbindTrackbar<TlevelsPage> htbr[]= { IDC_TBR_LEVELS_GAMMA,IDFF_levelsGamma,&TlevelsPage::levels2dlg, IDC_TBR_LEVELS_POSTERIZE,IDFF_levelsPosterize,&TlevelsPage::levels2dlg, 0,0,NULL }; bindHtracks(htbr); static const TbindCombobox<TlevelsPage> cbx[]= { IDC_CBX_LEVELS_MODE,IDFF_levelsMode,BINDCBX_SEL,&TlevelsPage::mode2dlg, 0 }; bindComboboxes(cbx); static const TbindButton<TlevelsPage> bt[]= { IDC_BT_LEVELS_CURVES_LOAD,&TlevelsPage::onCurveLoad, 0,NULL }; bindButtons(bt); static const TbindEditInt<TlevelsPage> edInt[]= { IDC_ED_Y_MAX_DELTA ,1,50,IDFF_levelsYmaxDelta,NULL, IDC_ED_Y_THRESHOLD ,1,150,IDFF_levelsYthreshold,NULL, IDC_ED_Y_TEMPORAL ,1,20,IDFF_levelsYtemporal,NULL, 0 }; bindEditInts(edInt); }
TpresetsPage::TpresetsPage(TffdshowPageDec *Iparent,const char_t *Ipresetfilter,const char_t *Ipresetext):TconfPageDec(Iparent,NULL,0),presetfilter(Ipresetfilter),presetext(Ipresetext) { helpURL = _l("http://ffdshow-tryout.sourceforge.net/wiki/video:profiles_preset_settings"); dialogId=IDD_PRESETS; static const TbindCheckbox<TpresetsPage> chb[]= { IDC_CHB_AUTOPRESET,IDFF_autoPreset,&TpresetsPage::autopreset2dlg, IDC_CHB_AUTOPRESET_FILEFIRST,IDFF_autoPresetFileFirst,NULL, 0,NULL,NULL }; bindCheckboxes(chb); static const TbindButton<TpresetsPage> bt[]= { IDC_BT_AUTOPRESET,&TpresetsPage::onAutopreset, IDC_BT_PRESET_NEW,&TpresetsPage::onNewBt, IDC_BT_PRESET_NEW_MENU,&TpresetsPage::onNewMenu, IDC_BT_PRESET_READFROMFILE,&TpresetsPage::onReadFromFile, IDC_BT_PRESET_SAVETOFILE,&TpresetsPage::onSaveToFile, IDC_BT_PRESET_REMOVE,&TpresetsPage::onRemove, IDC_BT_PRESET_RENAME,&TpresetsPage::onRenameBt, IDC_BT_PRESET_RENAME_MENU,&TpresetsPage::onRenameMenu, 0,NULL }; bindButtons(bt); }
TconvolverPage::TconvolverPage(TffdshowPageDec *Iparent,const TfilterIDFF *idff):TconfPageDecAudio(Iparent,idff) { resInter=IDC_CHB_CONVOLVER; static const TbindButton<TconvolverPage> bt[]= { IDC_BT_CONVOLVER_FILE,&TconvolverPage::onFile, IDC_BT_CONVOLVER_FILES_SET,&TconvolverPage::onManualFileSet, IDC_BT_CONVOLVER_FILES_CLEAR,&TconvolverPage::onManualFileClear, 0,NULL }; bindButtons(bt); static const TbindCheckbox<TconvolverPage> chb[]= { IDC_CHB_CONVOLVER_LEVELADJUST_AUTO,IDFF_convolverLevelAdjustAuto,&TconvolverPage::adjust2dlg, IDC_CHB_CONVOLVER_MAPPING,IDFF_convolverMappingMode,&TconvolverPage::mapping2dlg, 0,NULL,NULL }; bindCheckboxes(chb); static const TbindTrackbar<TconvolverPage> htbr[]= { IDC_TBR_CONVOLVER_MIXINGSTRENGTH,IDFF_convolverMixingStrength,&TconvolverPage::cfg2dlg, IDC_TBR_CONVOLVER_LEVELADJUSTDB,IDFF_convolverLevelAdjustDB,&TconvolverPage::adjust2dlg, 0,0,NULL }; bindHtracks(htbr); }
TresizeBordersPage::TresizeBordersPage(TffdshowPageDec *Iparent, const TfilterIDFF *idff): TconfPageDecVideo(Iparent, idff, 2) { dialogId = IDD_RESIZEBORDERS; static const TbindRadiobutton<TresizeBordersPage> rbt[] = { IDC_RBT_BORDER_INSIDE , IDFF_bordersInside, 1, &TresizeBordersPage::cfg2dlg, IDC_RBT_BORDER_OUTSIDE, IDFF_bordersInside, 0, &TresizeBordersPage::cfg2dlg, IDC_RBT_BORDER_PERCENT, IDFF_bordersUnits, 0, &TresizeBordersPage::cfg2dlg, IDC_RBT_BORDER_PIXELS , IDFF_bordersUnits, 1, &TresizeBordersPage::cfg2dlg, 0, 0, 0, NULL }; bindRadioButtons(rbt); static const TbindButton<TresizeBordersPage> bt[] = { IDC_CHB_BORDERSLOCKED, &TresizeBordersPage::onLock, 0, NULL }; bindButtons(bt); static const TbindTrackbar<TresizeBordersPage> htbr[] = { IDC_TBR_BORDER_HORIZ_DIV, IDFF_bordersDivX, &TresizeBordersPage::div2dlg, IDC_TBR_BORDER_VERT_DIV, IDFF_bordersDivY, &TresizeBordersPage::div2dlg, IDC_TBR_BORDER_BRIGHTNESS, IDFF_bordersBrightness, &TresizeBordersPage::div2dlg, 0, 0, NULL }; bindHtracks(htbr); }