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

📄 capturedlg.cpp

📁 社区视频监控系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_INFOCI)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_INFOCI)->MoveWindow(rc.Width()-80,rc.top+80,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_INLEN)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_INLEN)->MoveWindow(rc.Width()-80,rc.top+120,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_INAPERTURE)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_INAPERTURE)->MoveWindow(rc.Width()-80,rc.top+160,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_INBRUSH)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_INBRUSH)->MoveWindow(rc.Width()-80,rc.top+200,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_BUTTONUP)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_BUTTONUP)->MoveWindow(rc.Width()-110,rc.top+270,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_MSCOMM1)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_MSCOMM1)->MoveWindow(rc.Width()-110,rc.top+320,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_BUTTONDOWN)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_BUTTONDOWN)->MoveWindow(rc.Width()-110,rc.top+370,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_BUTTONLEFT)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_BUTTONLEFT)->MoveWindow(rc.Width()-160,rc.top+320,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_BUTTONRIGHT)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_BUTTONRIGHT)->MoveWindow(rc.Width()-60,rc.top+320,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_CONTROL)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_CONTROL)->MoveWindow(rc.Width()-170,rc.top+435,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_KINESCOPE)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_KINESCOPE)->MoveWindow(rc.Width()-170,rc.top+470,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_SNAPSHOT)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_SNAPSHOT)->MoveWindow(rc.Width()-170,rc.top+505,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_AUTOMATISM)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_AUTOMATISM)->MoveWindow(rc.Width()-170,rc.top+575,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_MANAGE)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_MANAGE)->MoveWindow(rc.Width()-85,rc.top+435,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_PLAY)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_PLAY)->MoveWindow(rc.Width()-85,rc.top+470,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_SETTING)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_SETTING)->MoveWindow(rc.Width()-85,rc.top+505,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_STOP)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_STOP)->MoveWindow(rc.Width()-85,rc.top+575,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_BMP)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_BMP)->MoveWindow(rc.Width()-172,rc.top+540,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_JPG)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_JPG)->MoveWindow(rc.Width()-133,rc.top+540,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_VGA)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_VGA)->MoveWindow(rc.Width()-87,rc.top+540,
		rcconctrl.Width(),rcconctrl.Height());
	GetDlgItem(IDC_PCI)->GetClientRect(rcconctrl);
	GetDlgItem(IDC_PCI)->MoveWindow(rc.Width()-48,rc.top+540,
		rcconctrl.Width(),rcconctrl.Height());

	m_Frame.SetWindowPos(&wndTop,0,0,rc.Width()-180,rc.Height()-10,SWP_SHOWWINDOW);
	m_Frame.GetClientRect(frc);
	m_Frame.SetWindowPos(NULL,0,7,frc.Width(),rc.Height()-8,0);
	m_Frame.ShowWindow(SW_SHOW);
}

void CCaptureDlg::OnOK() 
{

}

void CCaptureDlg::OnSnapshot() 
{
	if(CPreView::m_CurIndex != -1)
	{
		if(m_Frame.m_pList[CPreView::m_CurIndex].m_ShowImage)
		{
			CButton* pBmpButton = (CButton*)GetDlgItem(IDC_BMP);
			if(pBmpButton->GetCheck() != 0)
			{
				CFileDialog fDlg(FALSE,"bmp","bmp_001",OFN_HIDEREADONLY 
					| OFN_OVERWRITEPROMPT,"bmp|*.bmp",this);
				if(fDlg.DoModal() == IDOK)
				{
					CString fName = fDlg.GetPathName();
					VCASaveAsBmpFile(CPreView::m_CurIndex,fName);		
				}
			}
			else
			{
				CFileDialog fDlg(FALSE,"jpg","jpg_001",OFN_HIDEREADONLY 
					| OFN_OVERWRITEPROMPT,"JPG|*.JPG",this);
				if(fDlg.DoModal() == IDOK)
				{
					CString fName = fDlg.GetPathName();
					VCASaveAsJpegFile(CPreView::m_CurIndex,fName);		
				}		
			}
			m_LogTime = CTime::GetCurrentTime();
			CString strText;
			strText.Format("%s\t%s\t快照\r\n",m_UserName,
				m_LogTime.Format("%y-%m-%d %H:%M:%S"));
			CFile file;
			file.Open(m_LogPath,CFile::modeWrite);
			file.SeekToEnd();
			file.Write(strText,strText.GetLength());
			file.Close();
		}
		else
		{
			MessageBox("当前选择的图像不能预览!","提示");
		}
	}
}

void CCaptureDlg::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) 
{
	CDialog::OnWindowPosChanged(lpwndpos);
	if(!m_Cancel)
	{
		for (UINT i = 0 ; i< m_DevNum; i++)
		{
			if (m_Frame.m_pList[i].m_ShowImage)
			{	
				if (m_Frame.m_pList[i].m_Stop==psStop)
				{
					VCAStopVideoPreview(i);
					VCAUpdateOverlayWnd(m_Frame.GetSafeHwnd());
				}
				else if (m_Frame.m_pList[i].m_Stop==psPreview)
				{		
					m_Frame.m_pList[i].Invalidate();
					VCAUpdateOverlayWnd(m_Frame.m_hWnd);
					VCAUpdateVideoPreview(i,m_Frame.m_pList[i].m_hWnd);
				}
			}
		}
	}
}

void CCaptureDlg::OnBmp() 
{
	CButton* pBmpButton = (CButton*)GetDlgItem(IDC_BMP);
	pBmpButton->SetCheck(1);	
	CButton* pJpgButton = (CButton*)GetDlgItem(IDC_JPG);
	pJpgButton->SetCheck(0);	
}

void CCaptureDlg::OnJpg() 
{
	CButton* pJpgButton = (CButton*)GetDlgItem(IDC_JPG);
	pJpgButton->SetCheck(1);
	CButton* pBmpButton = (CButton*)GetDlgItem(IDC_BMP);
	pBmpButton->SetCheck(0);	
}

void CCaptureDlg::OnVga() 
{
	CButton* pVGAButton = (CButton*)GetDlgItem(IDC_VGA);
	pVGAButton->SetCheck(1);	
	CButton* pPCIButton = (CButton*)GetDlgItem(IDC_PCI);
	pPCIButton->SetCheck(0);	
}

void CCaptureDlg::OnPci() 
{
	CButton* pVGAButton = (CButton*)GetDlgItem(IDC_VGA);
	pVGAButton->SetCheck(0);	
	CButton* pPCIButton = (CButton*)GetDlgItem(IDC_PCI);
	pPCIButton->SetCheck(1);	
}

void CCaptureDlg::OnSetting() 
{
	CButton* pVGAButton = (CButton*)GetDlgItem(IDC_VGA);
	int sel = pVGAButton->GetCheck();	
	if(sel)
	{
		WritePrivateProfileString("显卡设置","类型","VGA","./syssetting.ini");
	}
	else
	{
		WritePrivateProfileString("显卡设置","类型","PCI","./syssetting.ini");
	}	
	m_LogTime = CTime::GetCurrentTime();
	CString strText;
	strText.Format("%s\t%s\t设置显卡类型\r\n",m_UserName,
		m_LogTime.Format("%y-%m-%d %H:%M:%S"));
	CFile file;
	file.Open(m_LogPath,CFile::modeWrite);
	file.SeekToEnd();
	file.Write(strText,strText.GetLength());
	file.Close();
	MessageBox("要使显卡设置生效,需要重新启动应用程序!","提示");
}

HBRUSH CCaptureDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr;
	
	if(nCtlColor == CTLCOLOR_DLG)
	{
		//定义一个位图画刷
		CBrush m_Brush(&m_BKGround);
		CRect rect;
		GetClientRect(rect);
		//选中画刷
		pDC->SelectObject(&m_Brush);
		//填充客户区域
		pDC->FillRect(rect,&m_Brush);
		return m_Brush;
	}
	else 
		hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	return hbr;
}

void CCaptureDlg::DrawDialog(UINT Flags)
{
	m_FrameHeight   = GetSystemMetrics(SM_CYFIXEDFRAME);
	m_BorderHeight  = GetSystemMetrics(SM_CYBORDER);
	m_FrameWidth    = GetSystemMetrics(SM_CXFIXEDFRAME);
	m_BorderWidth   = GetSystemMetrics(SM_CXBORDER);
	m_CaptionHeight = GetSystemMetrics(SM_CYCAPTION);

	CRect Clientrect;
	GetClientRect(Clientrect);
	CRect WinRC,FactRC;
	GetWindowRect(WinRC);
	FactRC.CopyRect(CRect(0,0,WinRC.Width(),WinRC.Height()));
	//获取窗口设备上下文
	CWindowDC WindowDC(this);
	CBitmap LeftLine,*OldObj;
	BITMAPINFO bitinfo;	
	CDC memDC;
	memDC.CreateCompatibleDC(&WindowDC);
	int leftwidth     = 0; //左标题的宽度
	int rightwidth    = 0; //右标题的宽度
	int leftlinewidth = 0; //窗体边框和3D宽度
	int rLineWidth;
	int bLineHeight;
	DeleteObject(LeftLine);
	LeftLine.LoadBitmap(IDB_RIGHTTITLE); //加载右标题
	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	rightwidth = bitinfo.bmiHeader.biWidth;
	LeftLine.Detach();
	int x,y;
	//绘制左边线
	//获取位图大小
	if(Flags & FLEFTBAR)
	{
		DeleteObject(LeftLine);
		LeftLine.LoadBitmap(IDB_LEFTBAR);
		LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
		LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
		x = bitinfo.bmiHeader.biWidth;
		y = bitinfo.bmiHeader.biHeight;				
		OldObj = memDC.SelectObject(&LeftLine);
		//判断位图的宽度与窗体边缘的宽度
		leftlinewidth = (x> m_FrameWidth+m_BorderWidth)? x:m_FrameWidth+m_BorderWidth;
		WindowDC.StretchBlt(0,m_CaptionHeight,leftlinewidth,
			FactRC.Height()-m_CaptionHeight,&memDC,0,0,x,y,SRCCOPY);
		memDC.SelectObject(OldObj);
		LeftLine.Detach();
	}	
	//绘制左标题
	if(Flags & FLEFTTITLE)
	{
		DeleteObject(LeftLine);
		LeftLine.LoadBitmap(IDB_LEFTTITLE);
		//获取位图大小
		LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
		OldObj = memDC.SelectObject(&LeftLine);
		leftwidth = x = bitinfo.bmiHeader.biWidth;
		y = bitinfo.bmiHeader.biHeight;
		m_TitleDrawHeight = (m_CaptionHeight+4 > y) ? m_CaptionHeight+4 : y;
		m_LTitleRc.CopyRect(CRect(0,0,x,m_TitleDrawHeight));
		WindowDC.StretchBlt(m_LTitleRc.left,m_LTitleRc.top,m_LTitleRc.Width(),
			m_LTitleRc.Height(),&memDC,0,0,x,y,SRCCOPY);
		memDC.SelectObject(OldObj);
		LeftLine.Detach();
	}
	//绘制右标题
	if(Flags & FRIGHTTITLE)
	{
		DeleteObject(LeftLine);
		LeftLine.LoadBitmap(IDB_RIGHTTITLE);
		//获取位图大小
		LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
		OldObj = memDC.SelectObject(&LeftLine);
		x = bitinfo.bmiHeader.biWidth;
		y = bitinfo.bmiHeader.biHeight;
		m_TitleDrawHeight = (m_CaptionHeight+4 > y) ? m_CaptionHeight+4 : y;	
		m_RTitleRc.CopyRect(CRect(FactRC.right-x,0,FactRC.right,m_TitleDrawHeight));
		WindowDC.StretchBlt(m_RTitleRc.left,m_RTitleRc.top,m_RTitleRc.Width(),
			m_RTitleRc.Height(),&memDC,0,0,x,y,SRCCOPY);
		DeleteObject( memDC.SelectObject(OldObj));
		LeftLine.Detach();
	}
	//绘制中间标题
	if(Flags & FMIDTITLE)
	{
		DeleteObject(LeftLine);
		LeftLine.LoadBitmap(IDB_MIDTITLE);
		//获取位图大小
		LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
		OldObj = memDC.SelectObject(&LeftLine);
		x = bitinfo.bmiHeader.biWidth;
		y = bitinfo.bmiHeader.biHeight;
		m_TitleDrawHeight = (m_CaptionHeight+4 > y) ? m_CaptionHeight+4 : y;
		m_MTitleRc.CopyRect(CRect(m_LTitleRc.right,0,m_RTitleRc.left,m_TitleDrawHeight));
		WindowDC.StretchBlt(m_MTitleRc.left,m_MTitleRc.top,m_MTitleRc.Width(),
			m_MTitleRc.Height(),&memDC,0,0,x,y,SRCCOPY);
		LeftLine.Detach();
		memDC.SelectObject(OldObj);
	}

	//绘制右边框
	if(Flags & FRIGHTBAR)
	{
		DeleteObject(LeftLine);
		LeftLine.LoadBitmap(IDB_RIGHTBAR);
		//获取位图大小
		LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
		OldObj = memDC.SelectObject(&LeftLine);
		x = bitinfo.bmiHeader.biWidth;
		y = bitinfo.bmiHeader.biHeight;
		rLineWidth = m_FrameWidth + m_BorderWidth;
		rLineWidth = rLineWidth>x? rLineWidth:x;
		WindowDC.StretchBlt(m_RTitleRc.right-rLineWidth,m_TitleDrawHeight,rLineWidth,
			FactRC.Height()-m_TitleDrawHeight,&memDC,0,0,x,y,SRCCOPY);
		memDC.SelectObject(OldObj);
		LeftLine.Detach();
	}

	//绘制底边框
	if(Flags & FBOTTOMBAR)
	{
		DeleteObject(LeftLine);
		LeftLine.LoadBitmap(IDB_BOTTOMBAR);
		//获取位图大小
		LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
		OldObj = memDC.SelectObject(&LeftLine);
		x = bitinfo.bmiHeader.biWidth;
		y = bitinfo.bmiHeader.biHeight;
		bLineHeight = m_BorderHeight + m_FrameHeight;
		bLineHeight = bLineHeight>y? bLineHeight:y;
		WindowDC.StretchBlt(leftlinewidth,FactRC.Height()-bLineHeight,m_RTitleRc.right
			-rLineWidth-leftlinewidth, bLineHeight,&memDC,0,0,x,y,SRCCOPY);
		memDC.SelectObject(OldObj);
		LeftLine.Detach();
	}
	//绘制底边框
	CPoint pos(30,1);
	m_MinRect.CopyRect(CRect(m_RTitleRc.left+pos.x,(m_TitleDrawHeight+2*m_BorderHeight
		-m_ButtonHeight)/2+pos.y,m_ButtonWidth,m_ButtonHeight));
	pos.x = 55; 	
	m_MaxRect.CopyRect(CRect(m_RTitleRc.left+pos.x,(m_TitleDrawHeight+2*m_BorderHeight 
		-m_ButtonHeight)/2+pos.y,m_ButtonWidth,m_ButtonHeight));
	pos.x = 80;
	m_CloseRect.CopyRect(CRect(m_RTitleRc.left+pos.x,(m_TitleDrawHeight+2*m_BorderHeight
		-m_ButtonHeight)/2+pos.y,m_ButtonWidth,m_ButtonHeight));
	//绘制最小化按钮
	if(Flags & FMINBUTTON)
	{
		DeleteObject(LeftLine);
		LeftLine.LoadBitmap(IDB_MINBT);
		//获取位图大小
		LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
		OldObj = memDC.SelectObject(&LeftLine);
		x = bitinfo.bmiHeader.biWidth;
		y = bitinfo.bmiHeader.biHeight;
		WindowDC.StretchBlt(m_MinRect.left,m_MinRect.top,m_MinRect.right,
			m_MinRect.bottom,&memDC,0,0,x,y,SRCCOPY);
		memDC.SelectObject(OldObj);
		LeftLine.Detach();
	}
	//绘制最大化按钮
	if ( Flags & FMAXBUTTON)
	{
		DeleteObject(LeftLine);
		LeftLine.LoadBitmap(IDB_MAXBT);
		//获取位图大小
		LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
		OldObj =  memDC.SelectObject(&LeftLine);
		x = bitinfo.bmiHeader.biWidth;
		y = bitinfo.bmiHeader.biHeight;
		WindowDC.StretchBlt(m_MaxRect.left,m_MaxRect.top,m_MaxRect.right,
			m_MaxRect.bottom,&memDC,0,0,x,y,SRCCOPY);
		memDC.SelectObject(OldObj);
		LeftLine.Detach();
	}
	//绘制关闭按钮
	if(Flags & FCLOSEBUTTON)
	{
		DeleteObject(LeftLine);
		LeftLine.LoadBitmap(IDB_CLOSEBT);
		//获取位图大小
		LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
		OldObj = memDC.SelectObject(&LeftLine);
		x = bitinfo.bmiHeader.biWidth;
		y = bitinfo.bmiHeader.biHeight;
		WindowDC.StretchBlt(m_CloseRect.left,m_CloseRect.top,m_CloseRect.right,
			m_CloseRect.bottom,&memDC,0,0,x,y,SRCCOPY);
		memDC.SelectObject(OldObj);

⌨️ 快捷键说明

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