⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sharedmemorydemodlg.cpp

📁 visual c++ 实例编程
💻 CPP
字号:
// SharedMemoryDemoDlg.cpp : Implementierungsdatei
//

#include "stdafx.h"
#include "SharedMemoryDemo.h"
#include "SharedMemoryDemoDlg.h"


#define SHARED_LENGTH 512

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSharedMemoryDemoDlg Dialogfeld

CSharedMemoryDemoDlg::CSharedMemoryDemoDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSharedMemoryDemoDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSharedMemoryDemoDlg)
	m_strName = _T("MySharedMemory");
	m_strShared = _T("ABCdef");
	//}}AFX_DATA_INIT
	// Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf ben鰐igt
   m_SM.Init(m_strName,SHARED_LENGTH);
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
   m_nGetTimer = NULL;
}

void CSharedMemoryDemoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
   CString strTemp = m_strName;
	//{{AFX_DATA_MAP(CSharedMemoryDemoDlg)
	DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
	DDX_Text(pDX, IDC_EDIT_SHARED, m_strShared);
	//}}AFX_DATA_MAP
   if( m_strShared != strTemp )
   m_SM.Init(m_strName,SHARED_LENGTH);
}

BEGIN_MESSAGE_MAP(CSharedMemoryDemoDlg, CDialog)
	//{{AFX_MSG_MAP(CSharedMemoryDemoDlg)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON_SET_NAME, OnButtonSetName)
	ON_BN_CLICKED(IDC_BUTTON_SET_DATA, OnButtonSetData)
	ON_BN_CLICKED(IDC_BUTTON_GET_DATA, OnButtonGetData)
	ON_EN_CHANGE(IDC_EDIT_SHARED, OnChangeEditShared)
	ON_BN_CLICKED(IDC_CHECK_GET_TIMER, OnCheckGetTimer)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSharedMemoryDemoDlg Nachrichten-Handler

BOOL CSharedMemoryDemoDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Symbol f黵 dieses Dialogfeld festlegen. Wird automatisch erledigt
	//  wenn das Hauptfenster der Anwendung kein Dialogfeld ist
	SetIcon(m_hIcon, TRUE);			// Gro遝s Symbol verwenden
	SetIcon(m_hIcon, FALSE);		// Kleines Symbol verwenden
	
	// ZU ERLEDIGEN: Hier zus鋞zliche Initialisierung einf黦en
	
	return TRUE;  // Geben Sie TRUE zur點k, au遝r ein Steuerelement soll den Fokus erhalten
}

// Wollen Sie Ihrem Dialogfeld eine Schaltfl鋍he "Minimieren" hinzuf黦en, ben鰐igen Sie 
//  den nachstehenden Code, um das Symbol zu zeichnen. F黵 MFC-Anwendungen, die das 
//  Dokument/Ansicht-Modell verwenden, wird dies automatisch f黵 Sie erledigt.

void CSharedMemoryDemoDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // Ger鋞ekontext f黵 Zeichnen

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Symbol in Client-Rechteck zentrieren
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Symbol zeichnen
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// Die Systemaufrufe fragen den Cursorform ab, die angezeigt werden soll, w鋒rend der Benutzer
//  das zum Symbol verkleinerte Fenster mit der Maus zieht.
HCURSOR CSharedMemoryDemoDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CSharedMemoryDemoDlg::OnButtonSetName() 
{
   UpdateData();
   UpdateData(FALSE);
}

void CSharedMemoryDemoDlg::OnButtonSetData() 
{
   UpdateData();
   m_SM.Lock();
   strcpy( (LPSTR)m_SM.GetData() , m_strShared );
   m_SM.Unlock();
   UpdateData(FALSE);
}

void CSharedMemoryDemoDlg::OnButtonGetData() 
{
   UpdateData();
   m_SM.Lock();
   m_strShared = (LPCSTR)m_SM.GetData();
   m_SM.Unlock();
   UpdateData(FALSE);
}

void CSharedMemoryDemoDlg::OnChangeEditShared() 
{
   UpdateData();
   CSharedMemory::Locker locker(m_SM);
   strcpy( (LPSTR)m_SM.GetData() , m_strShared );
   UpdateData(FALSE);
}

void CSharedMemoryDemoDlg::OnCheckGetTimer() 
{
   UpdateData();
   if(m_nGetTimer)
   {
      KillTimer(m_nGetTimer);
      m_nGetTimer = NULL;
   }
   else
      m_nGetTimer = SetTimer(2,10,NULL);
   UpdateData(FALSE);
}

void CSharedMemoryDemoDlg::OnTimer(UINT nIDEvent) 
{
   if( nIDEvent == m_nGetTimer)
      OnButtonGetData();
	CDialog::OnTimer(nIDEvent);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -