📄 evntprop.cpp
字号:
//
// This method should be called after CDIalog::InitDialog.
//
// Parameters:
// None.
//
// Returns:
// Nothing.
//
// Status:
// The stupid MFC2.0 library makes the labels invisible when an attempt
// is made to change the font of a static item. I've tried this with
// MFC4.0 and it works.
//
//***************************************************************************
void CEventPropertiesDlg::MakeLabelsBold()
{
#if 0
CFont* pfontDefault;
LOGFONT lf;
// Get the LOGFONT for the default static item font and then
// switch the logfont weight to bold.
pfontDefault = m_statSource.GetFont();
pfontDefault->GetObject(sizeof(lf), &lf);
lf.lfWeight = FW_BOLD;
// Create a bold font with all other characteristics the same as the
// default font. Then switch all labels to a bold font.
CFont fontNew;
if (fontNew.CreateFontIndirect(&lf)) {
m_statSource.SetFont(&fontNew, TRUE);
m_statLog.SetFont(&fontNew, TRUE);
m_statEventID.SetFont(&fontNew, TRUE);
m_statEnterpriseOID.SetFont(&fontNew, TRUE);
}
#endif //0
}
//********************************************************************
// CEventPropertiesDlg::EditEventProperties
//
// Edit the properties of a number of events.
//
// Parameters:
// CEventArray& aEvents
// An array of CEvent pointers. These are the events that
// are to be edited.
//
// Returns:
// BOOL
// TRUE if the user clicked OK and the events were edited.
// FALSE if the user clicked Cancel and the events were not
// edited.
//
//******************************************************************
BOOL CEventPropertiesDlg::EditEventProperties(CXEventArray& aEvents)
{
LONG nEvents = aEvents.GetSize();
if (nEvents == 0) {
return TRUE;
}
// The first event is taken as a representative of the other
// events. Copy the appropriate data from this event to the
// dialog.
CString sText;
CXEvent* pEvent = aEvents[0];
CXEventSource* pEventSource = pEvent->m_pEventSource;
CXEventLog* pEventLog = pEventSource->m_pEventLog;
LONG iEvent;
BOOL bMultipleSources = FALSE;
BOOL bMultipleLogs = FALSE;
for (iEvent=0; iEvent < nEvents; ++iEvent) {
pEvent = aEvents[iEvent];
if (pEvent->m_pEventSource != pEventSource) {
bMultipleSources = TRUE;
}
if (pEvent->m_pEventSource->m_pEventLog != pEventLog) {
bMultipleLogs = TRUE;
}
}
if (bMultipleSources) {
m_sSource.LoadString(IDS_MULTIPLE_SEL);
m_sSourceOID.LoadString(IDS_MULTIPLE_SEL);
}
else {
m_sSource = pEventSource->m_sName;
pEventSource->GetEnterpriseOID(m_sSourceOID, TRUE);
}
if (bMultipleLogs) {
m_sLog.LoadString(IDS_MULTIPLE_SEL);
}
else {
m_sLog = pEventSource->m_pEventLog->m_sName;
}
// Copy the initial values.
m_iTimeInterval = (int) pEvent->m_dwTimeInterval;
m_iEventCount = pEvent->m_dwCount;
m_bDidFlipEventCount = FALSE;
// m_bWithinTime = (m_iTimeInterval != 0);
if (nEvents > 1) {
m_sEventId.LoadString(IDS_MULTIPLE_SEL);
m_sDescription.LoadString(IDS_MULTIPLE_SEL);
m_sFullEventID.LoadString(IDS_MULTIPLE_SEL);
}
else {
pEvent->m_message.GetShortId(m_sEventId);
m_sDescription = pEvent->m_message.m_sText;
DecString(m_sFullEventID, pEvent->m_message.m_dwId);
}
// Put up the dialog and let the user edit the data.
BOOL bDidCancel = (DoModal() == IDCANCEL);
if (bDidCancel) {
// The user canceled the dialog, so do nothing.
return FALSE;
}
// Control comes here if the user clicked OK. Now we need to copy the
// user's settings to each event that we are editing and mark the registry
// as dirty if any of the settings changed.
for (iEvent=0; iEvent < nEvents; ++iEvent) {
pEvent = aEvents[iEvent];
if (pEvent->m_dwTimeInterval != (DWORD) m_iTimeInterval) {
g_reg.SetDirty(TRUE);
pEvent->m_dwTimeInterval = (DWORD) m_iTimeInterval;
}
if (pEvent->m_dwCount != (DWORD) m_iEventCount) {
g_reg.SetDirty(TRUE);
pEvent->m_dwCount = m_iEventCount;
}
}
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CEditField
CEditField::CEditField()
{
m_bIsDirty = FALSE;
}
CEditField::~CEditField()
{
}
BEGIN_MESSAGE_MAP(CEditField, CEdit)
//{{AFX_MSG_MAP(CEditField)
ON_WM_CHAR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEditField message handlers
void CEditField::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CEdit::OnChar(nChar, nRepCnt, nFlags);
m_bIsDirty = TRUE;
}
SCODE CEditField::GetValue(int& iValue)
{
CString sValue;
GetWindowText(sValue);
if (!IsDecimalInteger(sValue)) {
return E_FAIL;
}
iValue = _ttoi(sValue);
return S_OK;
}
/////////////////////////////////////////////////////////////////////////////
// CEditSpin
CEditSpin::CEditSpin()
{
m_bIsDirty = FALSE;
m_iSetPos = 0;
}
CEditSpin::~CEditSpin()
{
}
BEGIN_MESSAGE_MAP(CEditSpin, CSpinButtonCtrl)
//{{AFX_MSG_MAP(CEditSpin)
ON_WM_LBUTTONUP()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEditSpin message handlers
void CEditSpin::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CSpinButtonCtrl::OnLButtonUp(nFlags, point);
if (GetPos() != m_iSetPos) {
m_bIsDirty = TRUE;
}
}
int CEditSpin::SetPos(int iPos)
{
int iResult = CSpinButtonCtrl::SetPos(iPos);
m_iSetPos = GetPos();
m_bIsDirty = FALSE;
return iResult;
}
void CEditSpin::SetRange(int iLower, int iUpper)
{
int iPos = GetPos();
CSpinButtonCtrl::SetRange(iLower, iUpper);
if (iPos < iLower) {
iPos = iLower;
}
if (iPos > iUpper) {
iPos = iUpper;
}
SetPos(iPos);
SetRedraw();
m_iSetPos = iLower;
m_bIsDirty = FALSE;
}
BOOL CEditSpin::IsDirty()
{
int iCurPos = GetPos();
return (m_bIsDirty || (m_iSetPos != iCurPos));
}
BOOL CEventPropertiesDlg::OnHelpInfo(HELPINFO *pHelpInfo)
{
if (pHelpInfo->iContextType == HELPINFO_WINDOW &&
pHelpInfo->iCtrlId != IDD_NULL)
{
::WinHelp ((HWND)pHelpInfo->hItemHandle,
AfxGetApp()->m_pszHelpFilePath,
HELP_WM_HELP,
(ULONG_PTR)g_aHelpIDs_IDD_PROPERTIESDLG);
}
return TRUE;
}
void CEventPropertiesDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
if (pWnd == this)
return;
::WinHelp (pWnd->m_hWnd,
AfxGetApp()->m_pszHelpFilePath,
HELP_CONTEXTMENU,
(ULONG_PTR)g_aHelpIDs_IDD_PROPERTIESDLG);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -