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