📄 capturedlg.cpp
字号:
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 + -