⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp_apdlg.cpp

📁 一个在Linux下开发的IP摄像头的驱动程序及控制软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	DDX_Control(pDX, IDC_CHECK_DISPLAY, CButton_ChDisplay);
	DDX_Control(pDX, IDC_CONNECT_ALL, m_butConnectAll);
	DDX_Control(pDX, IDC_CHECK_EVENTRECORD, m_btnEventDrivenRec);
	DDX_Control(pDX, IDC_SHRINK_WND, m_btnShrinkWnd);
	DDX_Control(pDX, IDC_STATIC_FRLAB, m_stcFRPrompt);
	DDX_Control(pDX, IDC_BUT_TX, m_btnTx);
	DDX_Control(pDX, IDC_EDIT_TXFNAME, m_editTxFileName);
	DDX_Control(pDX, IDC_BUT_TX_BROWSE, m_btnTxBrowse);
}

BEGIN_MESSAGE_MAP(CMP_APDlg, CDialog)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
    ON_WM_TIMER()
	ON_WM_CLOSE()
	ON_WM_MOUSEMOVE()
	ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_VOLUME, OnNMReleasedcaptureSliderVolume)
	ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_RANGE, OnNMReleasedcaptureSliderRange)
	ON_MESSAGE(WM_CLOSE_CHANNEL, OnCloseChannel)
	ON_MESSAGE(WM_CONNECT_ERROR, OnConnectError)
	ON_MESSAGE(WM_SIGNAL_CHANGED, OnSignalChanged)
	ON_MESSAGE(WM_CHECK_UI, OnCallCheckUI)
	ON_MESSAGE(WM_DELETE_CONNECTION, OnDeleteDataBrokerConn)
	ON_MESSAGE(WM_UPDATE_DIDO, OnUpdateDIDO)
	ON_MESSAGE(WM_SHOW_ERROR, OnShowError)
	ON_MESSAGE(WM_TALK_EVENT, OnTalkEvent)
	ON_MESSAGE(WM_TALK_CLEAN, OnTalkClean)
	ON_MESSAGE(WM_SHOW_I_ARRIVE, OnChannelIArrive)
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
	ON_BN_CLICKED(IDC_RADIO_CH1, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH2, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH3, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH4, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH5, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH6, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH7, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH8, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH9, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH10, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH11, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH12, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH13, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH14, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH15, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_RADIO_CH16, OnBnClickedRadioCh)
	ON_BN_CLICKED(IDC_BUTTON_CH_SETTING, OnBnClickedButtonChSetting)
	ON_BN_CLICKED(IDC_BUTTON_CONNECT, OnBnClickedButtonConnect)
	ON_BN_CLICKED(IDC_BUTTON_RECORD, OnBnClickedButtonRecord)
	ON_BN_CLICKED(IDC_BUTTON_SNAP, OnBnClickedButtonSnap)
	ON_BN_CLICKED(IDC_ENLARGE_WND, OnBnClickedButton3)
	ON_BN_CLICKED(IDC_CHECK_DISPLAY, OnBnClickedCheckDisplay)
	ON_BN_CLICKED(IDC_CHECK_EVENTRECORD, OnBnClickedCheckEventrecord)
	ON_BN_CLICKED(IDC_SHRINK_WND, OnBnClickedShrinkWnd)
	ON_BN_CLICKED(IDC_CHECK_SWAP12, OnBnClickedCheckSwap12)
	ON_BN_CLICKED(IDC_BUT_TX, OnBnClickedButTx)
	ON_BN_CLICKED(IDC_BUT_TX_BROWSE, OnBnClickedButTxBrowse)
	ON_BN_CLICKED(IDC_CHECK_NOBORDER, OnBnClickedCheckNoborder)
	ON_BN_CLICKED(IDC_BUTTON_TALK, OnBnClickedButtonTalk)
	ON_BN_CLICKED(IDC_BUTTON_PAUSE, OnBnClickedButtonPause)
	ON_BN_CLICKED(IDC_BUTTON_PLAY, OnBnClickedButtonPlay)
	ON_BN_CLICKED(IDC_CHECK_NON_YUV, OnBnClickedCheckNonYuv)
	ON_BN_CLICKED(IDC_CONNECT_ALL, OnBnClickedConnectAll)
END_MESSAGE_MAP()

BOOL CMP_APDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
    //Read the Inifile and get parameters
	InitialParameters();
    
	MoveWindow(0,0,1024,768);
	m_DIPrompt.MoveWindow(530, 635, 35, 22);
	m_stcFRPrompt.MoveWindow(540, 610, 25, 22);
    //Arrange channle control Layout
	ArrangeChannle(g_nMaxChannel);  

	CButton_ChDisplay.MoveWindow(20, 50, 75, 25);
	m_btnEventDrivenRec.MoveWindow(20, 80, 75, 25);
	GetDlgItem(IDC_CHECK_SWAP12)->MoveWindow(20, 107, 75, 25);
	GetDlgItem(IDC_CHECK_NOBORDER)->MoveWindow(20, 132, 80, 20);

	CButton_CH_Setting.MoveWindow(20,152, 75, 40);
	m_butConnectAll.MoveWindow(20, 192, 75, 40);

	CSTatic_Connect.MoveWindow(10, 250, 100, 185);
	CButton_Connect.MoveWindow(20, 265, 75, 45);
	CButton_Record.MoveWindow(20, 320, 75, 45);
	CButton_Snap.MoveWindow(20, 375, 75, 45);

	m_STATIC_STATUS.MoveWindow(5,445,110,150);
	
	CSliderCtrl_Volume.MoveWindow(30, 600, 500, 35);
	CSliderCtrl_Volume.SetRange(0,100,TRUE);

	GetDlgItem(IDC_CHECK_SHOW_RETURN)->MoveWindow(435, 637, 85, 18);

	CButton_EnlargeWnd.MoveWindow(270, 677, 70, 18);
	m_btnShrinkWnd.MoveWindow(345, 677, 70, 18);
	m_btnTx.MoveWindow(30, 650, 70, 18);
	m_editTxFileName.MoveWindow(105, 650, 200, 18);
	m_btnTxBrowse.MoveWindow(310, 650, 25, 18);
	GetDlgItem(IDC_BUTTON_TALK)->MoveWindow(350, 650, 70, 18);

	g_Channel_Info[g_iFocus].bEventRecord = FALSE;
	g_Channel_Info[g_iFocus].bEventRecording = FALSE;
	g_Channel_Info[g_iFocus].dwCBCount = 0;
	CheckUI();
	
	int nRet = Initial_Module();
	if (nRet != 0)
		PostMessage(WM_CLOSE);

	SetTimer(1,1000,NULL);
	SetTimer(2,10000,NULL);
	if (g_iFocus >= g_nMaxChannel)
		g_iFocus = g_nMaxChannel - 1;
	UpdateData(FALSE);

	return TRUE;  // return TRUE  unless you set the focus to a control
}

//=================================================================
//	Function Group: WINDOW_MESSAGE Event Start Line
//=================================================================

void CMP_APDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}
// The system calls this function to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CMP_APDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}

//=================================================================
//	Function Group: ON_MESSAGE Event Start Line
//=================================================================

LRESULT CMP_APDlg::OnCloseChannel(WPARAM wParam, LPARAM lParam)
{
	Disconnect_Channel(wParam);
	return 0;
}

LRESULT CMP_APDlg::OnSignalChanged(WPARAM wParam, LPARAM lParam)
{
	char szBuf[MAX_PATH];

    sprintf(szBuf, "Channel %d Signal is changed to %s", wParam + 1,
		lParam == eSignalRestored?"ON":"OFF");
	MessageBox(szBuf, "Information", MB_OK);

	return 0;
}

LRESULT CMP_APDlg::OnConnectError(WPARAM wParam, LPARAM lParam)
{
	char szBuf[MAX_PATH];

	switch (lParam)
	{
	case connErrAuth :
        sprintf(szBuf, "Channel %d Authenticated failed", wParam + 1);
		break;
	case connErrConnFailed :
        sprintf(szBuf, "Channel %d connected failed", wParam + 1);
		break;
	case connErrHttpRead :
        sprintf(szBuf, "Channel %d read HTML data failed", wParam + 1);
		break;
	case connErrOutMemory :
        sprintf(szBuf, "Channel %d connected failed because out of memory", wParam + 1);
		break;
	default :
		return 0;
	}
	MessageBox(szBuf, "Error", MB_OK);

	return 0;
}

LRESULT CMP_APDlg::OnCallCheckUI(WPARAM wParam, LPARAM lParam)
{
	CheckUI();
	return 0;
}

LRESULT CMP_APDlg::OnUpdateDIDO(WPARAM wParam, LPARAM lParam)
{
	TSrvDepResource_ServerInfo srvInfo;
	DWORD dwlParam;
	WORD wDIVal, wDOVal;
	CString strTmp, str;
	int nFlag = 1, nCnt;
	int index;

	index = (int) wParam;
	SrvDepResource_GetParamForServerByFriendlyName(g_Channel_Info[index].chServer_Type, &srvInfo);

	dwlParam = (DWORD) lParam;

	wDIVal = LOWORD(dwlParam);
	wDOVal = HIWORD(dwlParam);
	for (nCnt = 0; nCnt < (int) srvInfo.dwDiNum; nCnt++, nFlag <<= 1)
	{
		if (wDIVal & nFlag)
			strTmp = "H";
		else
			strTmp = "L";

		if (nCnt > 0)
			str += "\n";
		str += strTmp;
	}
	str += "\n";

	nFlag = 1;
	for (nCnt = 0; nCnt < (int) srvInfo.dwDoNum; nCnt++, nFlag <<= 1)
	{
		if (wDOVal & nFlag)
			strTmp = "1";
		else
			strTmp = "0";

		if (nCnt > 0)
			str += "\n";
		str += strTmp;
	}

	strTmp.Format("%s", str);

	CWnd *pWnd = GetDlgItem(IDC_STATIC_DIVAL1 + index);
	pWnd->SetWindowText(str);
	return 0;
}

LRESULT CMP_APDlg::OnChannelIArrive(WPARAM wParam, LPARAM lParam)
{
	char szBuf[256];
	sprintf(szBuf, "Channel %d: I frame arrived at %d\n", wParam, lParam);

	CEdit *pEdit = (CEdit *) GetDlgItem(IDC_UPGRADE_STATUS);

	pEdit->SetSel(-1, 0, FALSE);
	CString strOrg;
	pEdit->GetWindowText(strOrg);
	if (strOrg.GetLength() > 0)
		pEdit->ReplaceSel("\r\n");
	pEdit->ReplaceSel(szBuf);

	return 0;
}

LRESULT CMP_APDlg::OnTalkEvent(WPARAM wParam, LPARAM lParam)
{
	if (g_Channel_Info[wParam].nTxConn == 2)
		TalkOneChannel(wParam);
	else
		TxOnChannel(wParam);

	return 0;
}

LRESULT CMP_APDlg::OnTalkClean(WPARAM wParam, LPARAM lParam)
{
	g_Channel_Info[wParam].eTalkState = eTalkNone;
	g_Channel_Info[wParam].nTxConn = 0;
	CheckUI();
	return 0;
}

void CMP_APDlg::OnClose()
{
	OnBnClickedOk();	
}

void CMP_APDlg::OnMouseMove(UINT nFlags, CPoint point)
{
	if(nFlags == MK_LBUTTON)
	{
		::ReleaseCapture();
		::SendMessage(m_hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
	}

	CDialog::OnMouseMove(nFlags, point);
}

//=================================================================
//	Function Group: OnClick Events Start Line
//=================================================================
void CMP_APDlg::OnBnClickedOk()
{
	CWaitCursor ws;
	KillTimer(1);
	m_bExit = TRUE;

	Release_Module();
	WriteParameters();
	OnOK();
}

void CMP_APDlg::OnBnClickedRadioCh()
{
	UpdateData();
	CheckUI();
}

void CMP_APDlg::OnBnClickedButtonChSetting()
{
	DlgChannel.ChannelSetting(g_iFocus,g_Channel_Info[g_iFocus]);
	DlgChannel.m_phSrvUtl = &m_hServUtil;

	if (DlgChannel.DoModal() == IDOK)
	{
		g_Channel_Info[g_iFocus] = DlgChannel.m_Ch_Info;
		CheckUI();
	}
}
void CMP_APDlg::OnBnClickedButtonConnect()
{
	// TODO: Add your control notification handler code here

	if ( g_Channel_Info[g_iFocus].chStatus == channelStopped )
	{
		// call connect channel
		EnterCriticalSection(&m_CS);
		g_Channel_Info[g_iFocus].bUserStop = FALSE;
		g_Channel_Info[g_iFocus].bNeedReconnect = FALSE;
		LeaveCriticalSection(&m_CS);

		Connect_Channel(g_iFocus);
	}
	else
	{
		if ( g_Channel_Info[g_iFocus].bRecording == FALSE)
		{
			// call disconnect channel
			EnterCriticalSection(&m_CS);
			g_Channel_Info[g_iFocus].bUserStop = TRUE;
			g_Channel_Info[g_iFocus].bNeedReconnect = FALSE;
			LeaveCriticalSection(&m_CS);
			Disconnect_Channel();
		}
		else
		{
			char chTemp[32];
			sprintf(chTemp,"Channel %d",g_iFocus);
			MessageBox(" Please stop recording!",chTemp,MB_ICONWARNING);
		}
		
	}
	CheckUI();
}
void CMP_APDlg::OnBnClickedButtonRecord()
{		
	if (g_Channel_Info[g_iFocus].bRecording == FALSE)
	{
		if ( g_Channel_Info[g_iFocus].bConnecting == TRUE)
		{
			g_Channel_Info[g_iFocus].bRecording = TRUE;
			CButton_Record.SetWindowText("Stop");
			StartRecord_Channel();
		}
		else
		{
			char chTemp[32];
			sprintf(chTemp,"Channel %d",g_iFocus);
			MessageBox(" No connecting!",chTemp,MB_ICONWARNING);
		}
	}
	else
	{
		g_Channel_Info[g_iFocus].bRecording = FALSE;
		StopRecord_Channel();
		CButton_Record.SetWindowText("Record");
	}
}

void CMP_APDlg::OnBnClickedButtonSnap()
{
	TSNAPSHOT tSnapShot;
	FILE * fp = NULL;
	SCODE scResult;
	int nStart, nEnd;
	char szFileName[MAX_PATH];

	if (g_bSnapAllChannel)
	{
		nStart = 0;
		nEnd = g_nMaxChannel - 1;
	}
	else
	{
		nStart = g_iFocus;
		nEnd = g_iFocus;
	}

	for (int nCnt = nStart; nCnt <= nEnd; nCnt++)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -