📄 sharedmemorydemodlg.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 + -