static BOOL CALLBACK CanSetupDlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM /* lParam */) { int wmId, wmEvent; switch(uMessage) { case WM_INITDIALOG: { VSCAN_API_VERSION version; char temp[MAX_PATH]; g_hDlg = hDlg; memset(g_list, 0, sizeof(g_list)); VSCAN_Ioctl(CanCfg->hCan, VSCAN_IOCTL_GET_API_VERSION, &version); sprintf(temp, "%d.%d.%d", version.Major, version.Minor, version.SubMinor); SetDlgItemText(g_hDlg, IDC_API_VERSION, temp); InitBaudrateList(); if (!strncmp(CanCfg->szLocation, "\\\\.\\", 4)) { SetDlgItemText(g_hDlg, IDC_DEVICE_LIST, CanCfg->szLocation + 4); } else { SetDlgItemText(g_hDlg, IDC_DEVICE_LIST, CanCfg->szLocation); } switch(CanCfg->dwMode) { case VSCAN_MODE_LISTEN_ONLY: CheckDlgButton(g_hDlg, IDC_MODE_LISTEN_ONLY, BST_CHECKED); break; case VSCAN_MODE_SELF_RECEPTION: CheckDlgButton(g_hDlg, IDC_MODE_SELF_RECEPTION, BST_CHECKED); break; default: CheckDlgButton(g_hDlg, IDC_MODE_NORMAL, BST_CHECKED); break; } if (CanCfg->bTimestamps) { CheckDlgButton(g_hDlg, IDC_CHECK_TIMESTAMPS, BST_CHECKED); } if (CanCfg->bDebug) { CheckDlgButton(g_hDlg, IDC_CHECK_DEBUG, BST_CHECKED); } SendDlgItemMessage(g_hDlg, IDC_BTR0, EM_LIMITTEXT, 2, 0); SendDlgItemMessage(g_hDlg, IDC_BTR1, EM_LIMITTEXT, 2, 0); sprintf(temp, "%02X", CanCfg->btr.Btr0); SetDlgItemText(g_hDlg, IDC_BTR0, temp); sprintf(temp, "%02X", CanCfg->btr.Btr1); SetDlgItemText(g_hDlg, IDC_BTR1, temp); SendDlgItemMessage(g_hDlg, IDC_ACC_CODE, EM_LIMITTEXT, 8, 0); SendDlgItemMessage(g_hDlg, IDC_ACC_MASK, EM_LIMITTEXT, 8, 0); sprintf(temp, "%08X", CanCfg->codeMask.Code); SetDlgItemText(g_hDlg, IDC_ACC_CODE, temp); sprintf(temp, "%08X", CanCfg->codeMask.Mask); SetDlgItemText(g_hDlg, IDC_ACC_MASK, temp); if (CanCfg->bDualFilter) { SendDlgItemMessage(g_hDlg, IDC_FILTER_DUAL, BM_SETCHECK, BST_CHECKED, 0); } } return TRUE; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); switch (wmId) { case IDCANCEL: case IDOK: FreeDeviceList(g_list); EndDialog(hDlg, FALSE); return TRUE; case IDC_SAVE: SaveDeviceData(); FreeDeviceList(g_list); EndDialog(hDlg, TRUE); return TRUE; case IDC_SEARCH: InitDeviceList(); return TRUE; case IDC_DEVICE_LIST: switch (wmEvent) { case CBN_SELCHANGE: { int sel = SendDlgItemMessage(g_hDlg, IDC_DEVICE_LIST, CB_GETCURSEL, 0, 0); PrintDeviceInfo(sel); } break; case CBN_SETFOCUS: SetDlgItemText(g_hDlg, IDC_DEVICE_LIST, ""); PrintDeviceInfo(-1); break; case CBN_EDITCHANGE: PrintDeviceInfo(-1); break; default: return FALSE; } return TRUE; } } return FALSE; }
DVBMediaAddon::~DVBMediaAddon() { FreeDeviceList(); }