gusucode.com > 基于VC++的局域网视频聊天系统源码程序 > 基于VC++的局域网视频聊天系统源码程序/code/ChatClient/LocalDlg.cpp
// LocalDlg.cpp : implementation file // #include "stdafx.h" #include "ChatClient.h" #include "ChatClientDlg.h" #include "LocalDlg.h" #include "VideoCapture.h" #include "VideoCodec.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CLocalDlg dialog CLocalDlg::CLocalDlg(CWnd* pParent /*=NULL*/) : CDialog(CLocalDlg::IDD, pParent) { //{{AFX_DATA_INIT(CLocalDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CLocalDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLocalDlg) // NOTE: the ClassWizard will add DDX and DDV calls here DDX_Control(pDX, IDC_VIEWLOCAL, m_VLocal); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CLocalDlg, CDialog) //{{AFX_MSG_MAP(CLocalDlg) ON_BN_CLICKED(IDC_VIEWLOCAL, OnViewlocal) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CLocalDlg message handlers BOOL CLocalDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here HANDLE h=(HANDLE)1; ::SetProp(m_hWnd,_T("视频聊天"),h); SetWindowText(_T("视频聊天")); m_hdc = GetDC()->m_hDC ; m_VidLocal = TRUE; m_Video_x=7; m_Video_y=30; //make the title bar region /* POINT pt[3]; pt[0].x =m_Video_x; pt[0].y =m_Video_y; pt[1].x=m_Video_x+176; pt[1].y =m_Video_y; pt[2].x=m_Video_x+176; pt[2].y =m_Video_y+144;*/ hdib = NULL; // m_bExitNow = FALSE; DeleteObject(m_hVideoRgn); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CLocalDlg::DisplayRemoteFrame(unsigned char *data, int size) { // if(m_bExitNow ) return; if(data == NULL || size<=0) return; if( m_VidLocal && m_pRemoteDlg) m_pRemoteDlg->DisplayRemoteFrame (data,size); else if(!m_VidLocal) ::DrawDibDraw(hdib, m_hdc, m_Video_x, // dest : left pos m_Video_y, // dest : top pos 176, // don't zoom x 144, // don't zoom y &m_bmpinfo->bmiHeader, // bmp header info data, // bmp data 0, // src :left 0, // src :top IMAGE_WIDTH, // src : width IMAGE_HEIGHT, // src : height DDF_SAME_DRAW // use prev params.... ); } void CLocalDlg::SetParent(CDialog *pdialog) { pdlg = pdialog; ////////////////////////////////////////////////////////////////////////// m_pRemoteDlg = &((CChatClientDlg*)pdlg)->m_RemoteDlg; ////////////////////////////////////////////////////////////////////////// } void CLocalDlg::FreeSource() { // DeleteObject(m_hTitleRgn); DeleteObject(m_hVideoRgn); if(hdib!=NULL) { ::DrawDibEnd(hdib); ::DrawDibClose(hdib); } } void CLocalDlg::OnViewlocal() { // TODO: Add your control notification handler code here m_VidLocal =!m_VidLocal; if(m_VidLocal) { m_VLocal.SetWindowText (_T("本地")); SetWindowText(_T("本地视频")); m_pRemoteDlg->SetWindowText(dcontrol.remotename); } else { m_VLocal.SetWindowText (_T("远程")); SetWindowText(dcontrol.remotename); m_pRemoteDlg->SetWindowText(_T("本地视频")); } Invalidate (TRUE); }