www.pudn.com > 在VC++ 6.0下利用共享内存、消息实现内部进程通讯.rar > WFServerView.cpp
// WFServerView.cpp : implementation of the CWFServerView class
//
#include "stdafx.h"
#include "WFServer.h"
#include "WFServerDoc.h"
#include "WFServerView.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CString str="WFClient";
/////////////////////////////////////////////////////////////////////////////
// CWFServerView
IMPLEMENT_DYNCREATE(CWFServerView, CFormView)
BEGIN_MESSAGE_MAP(CWFServerView, CFormView)
//{{AFX_MSG_MAP(CWFServerView)
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()
/////////////////////////////////////////////////////////////////////////////
// CWFServerView construction/destruction
CWFServerView::CWFServerView()
: CFormView(CWFServerView::IDD)
{
//{{AFX_DATA_INIT(CWFServerView)
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
}
CWFServerView::~CWFServerView()
{
}
void CWFServerView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWFServerView)
DDX_Control(pDX, IDC_BUTTON1, m_btn1);
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 CWFServerView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
void CWFServerView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
m_btn1.EnableWindow(false);
int val=atoi(m_edit10);
m_ServerData.Create(val);
}
/////////////////////////////////////////////////////////////////////////////
// CWFServerView printing
BOOL CWFServerView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CWFServerView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CWFServerView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
void CWFServerView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
// TODO: add customized printing code here
}
/////////////////////////////////////////////////////////////////////////////
// CWFServerView diagnostics
#ifdef _DEBUG
void CWFServerView::AssertValid() const
{
CFormView::AssertValid();
}
void CWFServerView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CWFServerDoc* CWFServerView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CWFServerDoc)));
return (CWFServerDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CWFServerView message handlers
void CWFServerView::OnButton1() //读取数据区1
{
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
if(pFrame->m_AskOper)
{
m_edit2.Format("%d",m_ServerData.GetData1Value(0));
m_edit3.Format("%d",m_ServerData.GetData1Value(1));
m_edit4.Format("%d",m_ServerData.GetData1Value(2));
m_edit5.Format("%d",m_ServerData.GetData1Value(3));
m_edit6.Format("%d",m_ServerData.GetData1Value(4));
m_edit7.Format("%d",m_ServerData.GetData1Value(5));
m_edit8.Format("%d",m_ServerData.GetData1Value(6));
m_edit9.Format("%d",m_ServerData.GetData1Value(7));
UpdateData(FALSE);
pFrame->m_AskOper=false;
m_btn1.EnableWindow(false);
}
}
void CWFServerView::OnButton2() //设置数据区2
{
int val;
UpdateData(TRUE);
if(atoi(m_edit20)>0)
{
val=atoi(m_edit12);
m_ServerData.SetData2Value(0,val);
val=atoi(m_edit13);
m_ServerData.SetData2Value(1,val);
val=atoi(m_edit14);
m_ServerData.SetData2Value(2,val);
val=atoi(m_edit15);
m_ServerData.SetData2Value(3,val);
val=atoi(m_edit16);
m_ServerData.SetData2Value(4,val);
val=atoi(m_edit17);
m_ServerData.SetData2Value(5,val);
val=atoi(m_edit18);
m_ServerData.SetData2Value(6,val);
val=atoi(m_edit19);
m_ServerData.SetData2Value(7,val);
HWND addr;
m_ServerData.GetClientAddress(addr);
CWnd *pWnd=CWnd::FromHandle(addr);
if(pWnd)
pWnd->PostMessage(WM_SERVERDATACHANGE,0,0);
}
else
{
AfxMessageBox("请在客户端程序中设置客户端的窗口句柄!");
return;
}
/*CString str="WFClient";
CWnd *pWnd=CWnd::FindWindow(NULL,str);
if(pWnd)
{
pWnd->PostMessage(WM_SERVERDATACHANGE,0,0); //999
}*/
}
void CWFServerView::OnButton3() //设置服务器窗口句柄
{
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
HWND addr=pFrame->m_hWnd;
m_ServerData.SetServerAddress(addr);
m_edit11.Format("%d",addr);
UpdateData(FALSE);
}
void CWFServerView::OnButton4() //读取客户端窗口句柄
{
HWND addr=0;
m_ServerData.GetClientAddress(addr);
m_edit20.Format("%d",addr);
UpdateData(FALSE);
}
void CWFServerView::OnButton5() //发送消息给客户端
{
CString str="WFClient";
CWnd *pWnd=CWnd::FindWindow(NULL,str);
if(pWnd)
{
//pWnd->PostMessage(WM_JKTOWFYCCHANGE,0,0);
}
}