Пример #1
0
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;
}
Пример #2
0
DVBMediaAddon::~DVBMediaAddon()
{
	FreeDeviceList();
}