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);
}
}
}