www.pudn.com > 在VC++ 6.0下利用共享内存、消息实现内部进程通讯.rar > WFClientView.cpp


// WFClientView.cpp : implementation of the CWFClientView class 
// 
 
#include "stdafx.h" 
#include "WFClient.h" 
 
#include "WFClientDoc.h" 
#include "WFClientView.h" 
#include "MainFrm.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CWFClientView 
 
IMPLEMENT_DYNCREATE(CWFClientView, CFormView) 
 
BEGIN_MESSAGE_MAP(CWFClientView, CFormView) 
	//{{AFX_MSG_MAP(CWFClientView) 
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1) 
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2) 
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3) 
	ON_BN_CLICKED(IDC_BUTTON4, OnButton4) 
	ON_BN_CLICKED(IDC_BUTTON5, OnButton5) 
	//}}AFX_MSG_MAP 
	// Standard printing commands 
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint) 
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint) 
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview) 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CWFClientView construction/destruction 
 
CWFClientView::CWFClientView() 
	: CFormView(CWFClientView::IDD) 
{ 
	//{{AFX_DATA_INIT(CWFClientView) 
	m_edit10 = _T("8"); 
	m_edit11 = _T(""); 
	m_edit12 = _T(""); 
	m_edit13 = _T(""); 
	m_edit14 = _T(""); 
	m_edit15 = _T(""); 
	m_edit16 = _T(""); 
	m_edit17 = _T(""); 
	m_edit18 = _T(""); 
	m_edit19 = _T(""); 
	m_edit2 = _T(""); 
	m_edit3 = _T(""); 
	m_edit4 = _T(""); 
	m_edit5 = _T(""); 
	m_edit6 = _T(""); 
	m_edit7 = _T(""); 
	m_edit8 = _T(""); 
	m_edit9 = _T(""); 
	m_edit20 = _T(""); 
	//}}AFX_DATA_INIT 
	// TODO: add construction code here 
 
} 
 
CWFClientView::~CWFClientView() 
{ 
} 
 
void CWFClientView::DoDataExchange(CDataExchange* pDX) 
{ 
	CFormView::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CWFClientView) 
	DDX_Control(pDX, IDC_BUTTON2, m_btn2); 
	DDX_Text(pDX, IDC_EDIT10, m_edit10); 
	DDX_Text(pDX, IDC_EDIT11, m_edit11); 
	DDX_Text(pDX, IDC_EDIT12, m_edit12); 
	DDX_Text(pDX, IDC_EDIT13, m_edit13); 
	DDX_Text(pDX, IDC_EDIT14, m_edit14); 
	DDX_Text(pDX, IDC_EDIT15, m_edit15); 
	DDX_Text(pDX, IDC_EDIT16, m_edit16); 
	DDX_Text(pDX, IDC_EDIT17, m_edit17); 
	DDX_Text(pDX, IDC_EDIT18, m_edit18); 
	DDX_Text(pDX, IDC_EDIT19, m_edit19); 
	DDX_Text(pDX, IDC_EDIT2, m_edit2); 
	DDX_Text(pDX, IDC_EDIT3, m_edit3); 
	DDX_Text(pDX, IDC_EDIT4, m_edit4); 
	DDX_Text(pDX, IDC_EDIT5, m_edit5); 
	DDX_Text(pDX, IDC_EDIT6, m_edit6); 
	DDX_Text(pDX, IDC_EDIT7, m_edit7); 
	DDX_Text(pDX, IDC_EDIT8, m_edit8); 
	DDX_Text(pDX, IDC_EDIT9, m_edit9); 
	DDX_Text(pDX, IDC_EDIT20, m_edit20); 
	//}}AFX_DATA_MAP 
} 
 
BOOL CWFClientView::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	// TODO: Modify the Window class or styles here by modifying 
	//  the CREATESTRUCT cs 
 
	return CFormView::PreCreateWindow(cs); 
} 
 
void CWFClientView::OnInitialUpdate() 
{ 
	CFormView::OnInitialUpdate(); 
	GetParentFrame()->RecalcLayout(); 
	ResizeParentToFit(); 
 
	m_btn2.EnableWindow(false); 
 
	m_ClientData.Open(FILE_MAP_WRITE,"zzj"); 
 
	int val=atoi(m_edit10); 
	m_ClientData.SetRealDataSum(val); 
 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CWFClientView printing 
 
BOOL CWFClientView::OnPreparePrinting(CPrintInfo* pInfo) 
{ 
	// default preparation 
	return DoPreparePrinting(pInfo); 
} 
 
void CWFClientView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add extra initialization before printing 
} 
 
void CWFClientView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add cleanup after printing 
} 
 
void CWFClientView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add customized printing code here 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CWFClientView diagnostics 
 
#ifdef _DEBUG 
void CWFClientView::AssertValid() const 
{ 
	CFormView::AssertValid(); 
} 
 
void CWFClientView::Dump(CDumpContext& dc) const 
{ 
	CFormView::Dump(dc); 
} 
 
CWFClientDoc* CWFClientView::GetDocument() // non-debug version is inline 
{ 
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CWFClientDoc))); 
	return (CWFClientDoc*)m_pDocument; 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CWFClientView message handlers 
 
void CWFClientView::OnButton1() //设置数据区1 
{ 
	int val; 
	UpdateData(TRUE); 
 
	if(atoi(m_edit11)>0) 
	{ 
		val=atoi(m_edit2); 
		m_ClientData.SetData1Value(0,val); 
 
		val=atoi(m_edit3); 
		m_ClientData.SetData1Value(1,val); 
 
		val=atoi(m_edit4); 
		m_ClientData.SetData1Value(2,val); 
 
		val=atoi(m_edit5); 
		m_ClientData.SetData1Value(3,val); 
 
		val=atoi(m_edit6); 
		m_ClientData.SetData1Value(4,val); 
 
		val=atoi(m_edit7); 
		m_ClientData.SetData1Value(5,val); 
 
		val=atoi(m_edit8); 
		m_ClientData.SetData1Value(6,val); 
 
		val=atoi(m_edit9); 
		m_ClientData.SetData1Value(7,val); 
 
		HWND addr; 
		m_ClientData.GetServerAddress(addr); 
		CWnd *pWnd=CWnd::FromHandle(addr); 
		if(pWnd)  
			pWnd->PostMessage(WM_CLIENTDATACNANGE,0,0);  
	} 
	else 
	{ 
		AfxMessageBox("请在服务端程序中设置服务端的窗口句柄!"); 
		return; 
	} 
	/*CString str="WFServer"; 
	CWnd *pWnd=CWnd::FindWindow(NULL,str);  
    if(pWnd)  
	{ 
		pWnd->PostMessage(WM_CLIENTDATACNANGE,0,0);  
	}*/ 
} 
 
void CWFClientView::OnButton2() //读取数据区2 
{ 
	CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd; 
	if(pFrame->m_RealDataChange) 
	{ 
		m_edit12.Format("%d",m_ClientData.GetData2Value(0)); 
		m_edit13.Format("%d",m_ClientData.GetData2Value(1)); 
		m_edit14.Format("%d",m_ClientData.GetData2Value(2)); 
		m_edit15.Format("%d",m_ClientData.GetData2Value(3)); 
		m_edit16.Format("%d",m_ClientData.GetData2Value(4)); 
		m_edit17.Format("%d",m_ClientData.GetData2Value(5)); 
		m_edit18.Format("%d",m_ClientData.GetData2Value(6)); 
		m_edit19.Format("%d",m_ClientData.GetData2Value(7)); 
		UpdateData(FALSE); 
 
		pFrame->m_RealDataChange=false; 
		m_btn2.EnableWindow(false); 
	} 
} 
 
void CWFClientView::OnButton3() //读取服务器窗口句柄 
{ 
	HWND addr=0; 
	m_ClientData.GetServerAddress(addr); 
	m_edit11.Format("%d",addr); 
	UpdateData(FALSE); 
	 
} 
 
void CWFClientView::OnButton4() //设置客户端窗口句柄 
{ 
	CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd; 
	HWND addr=pFrame->m_hWnd; 
	m_ClientData.SetClientAddress(addr); 
 
	m_edit20.Format("%d",addr); 
	UpdateData(FALSE);	 
} 
 
void CWFClientView::OnButton5()  
{ 
	HWND addr; 
	m_ClientData.GetServerAddress(addr); 
 
	if(addr!=0) 
	{ 
		CWnd *pWnd=CWnd::FromHandle(addr); 
		if(pWnd)  
		{ 
			pWnd->PostMessage(WM_CLIENTDATACNANGE,0,0);  
		} 
	}	 
}