void CXTPCalendarReminder::SetEvent(CXTPCalendarEvent* pEvent) { if (!pEvent || !pEvent->GetDataProvider()) { ASSERT(FALSE); return; } // data provider CMDTARGET_RELEASE(m_pEventDataProvider); m_pEventDataProvider = pEvent->GetDataProvider(); CMDTARGET_ADDREF(m_pEventDataProvider); //----- m_dtEventStartTime = pEvent->GetStartTime(); int nRState = pEvent->GetRecurrenceState(); if (nRState == xtpCalendarRecurrenceNotRecurring) { m_eEventType = evtNormal; m_dwNormalEventID = pEvent->GetEventID(); return; } CXTPCalendarRecurrencePatternPtr ptrPattern = pEvent->GetRecurrencePattern(); if (nRState != xtpCalendarRecurrenceOccurrence && nRState != xtpCalendarRecurrenceException || !ptrPattern) { ASSERT(FALSE); return; } m_eEventType = evtRecurrence; m_RecurrenceEventInfo.m_dwMasterEventID = ptrPattern->GetMasterEventID(); if (nRState == xtpCalendarRecurrenceOccurrence) { m_RecurrenceEventInfo.m_dtOccurrenceStartTime = pEvent->GetStartTime(); m_RecurrenceEventInfo.m_dtOccurrenceEndTime = pEvent->GetEndTime(); } else if (nRState == xtpCalendarRecurrenceException) { m_RecurrenceEventInfo.m_dtOccurrenceStartTime = pEvent->GetRException_StartTimeOrig(); m_RecurrenceEventInfo.m_dtOccurrenceEndTime = pEvent->GetRException_EndTimeOrig(); } else { ASSERT(FALSE); } }
void CXTPSkinManager::SetWindowTheme(HWND hWnd, CXTPSkinManagerSchema* pSchema) { CXTPSkinObject* pSkinObject = Lookup(hWnd); if (pSkinObject) { CMDTARGET_RELEASE(pSkinObject->m_pSchema); pSkinObject->m_pSchema = pSchema; CMDTARGET_ADDREF(pSchema); pSkinObject->OnSkinChanged(m_bEnabled, pSchema ? TRUE : m_bEnabled); } hWnd = ::GetWindow(hWnd, GW_CHILD); while (hWnd) { SetWindowTheme(hWnd, pSchema); hWnd = ::GetWindow(hWnd, GW_HWNDNEXT); } }
void CSimpleReport::Paste() { if (IsVirtualMode()) return; CWaitCursor _WC; CLIPFORMAT uCF_Records = (CLIPFORMAT)::RegisterClipboardFormat(XTPREPORTCTRL_CF_RECORDS); CXTPReportRecords arRecords; BOOL bTryPasteFromText = TRUE; // Retrieve text from the clipboard if (!OpenClipboard()) return; if (::IsClipboardFormatAvailable(uCF_Records)) { HGLOBAL hPasteData = ::GetClipboardData(uCF_Records); if (hPasteData) { bTryPasteFromText = FALSE; const int cErrTextSize = 1024; TCHAR szErrText[cErrTextSize + 1]; CSharedFile fileSahred; fileSahred.SetHandle(hPasteData, FALSE); CArchive ar(&fileSahred, CArchive::load); try { CXTPPropExchangeArchive px(ar); BOOL bread = FALSE; #if _XTPLIB_VERSION_PREFIX == 1502 bread = _ReadRecordsFromData(&px, arRecords); #else bread = _ReadRecodsFromData(&px, arRecords); #endif if (!bread) { arRecords.RemoveAll(); } } catch(CArchiveException* pE) { if (pE->GetErrorMessage(szErrText, cErrTextSize)) { TRACE(_T("EXCEPTION: CXTPReportControl::Paste() - %s\n"), szErrText); } pE->Delete(); } catch(CFileException* pE) { if (pE->GetErrorMessage(szErrText, cErrTextSize)) { TRACE(_T("EXCEPTION: CXTPReportControl::Paste() - %s\n"), szErrText); } pE->Delete(); } catch(...) { TRACE(_T("EXCEPTION: CXTPReportControl::Paste() - Unhandled Exception!\n")); } //********* ar.Close(); // detach from file fileSahred.Detach(); //detach from data ::GlobalUnlock(hPasteData); // unlock data } } UINT uCF_TText = sizeof(TCHAR) == 2 ? CF_UNICODETEXT : CF_TEXT; if (bTryPasteFromText && ::IsClipboardFormatAvailable(uCF_TText)) { // Try to get text data from the clipboard HGLOBAL hglbPaste = ::GetClipboardData(uCF_TText); // Import Text data into the control if (hglbPaste != NULL) { TCHAR* lpszClipboard = (TCHAR*)GlobalLock(hglbPaste); BOOL bRead = FALSE; #if _XTPLIB_VERSION_PREFIX == 1502 bRead = _ReadRecordsFromText(lpszClipboard, arRecords); #else bRead = _ReadRecodsFromText(lpszClipboard, arRecords); #endif if (!bRead) { arRecords.RemoveAll(); } ::GlobalUnlock(hglbPaste); } } ::CloseClipboard(); ////////////////////////////////////////////////////////////////////////// CUpdateContext updateContext(this); // Add and Populate records CXTPReportRow* pRow = GetFocusedRow(); if (pRow == NULL) return; int n = pRow->GetRecord()->GetIndex(); int nRecordsCount = arRecords.GetCount(); if (nRecordsCount > 0) { for (int i = nRecordsCount - 1; i >= 0; i--) { CXTPReportRecord* pRecord = arRecords.GetAt(i); if (pRecord) { CMDTARGET_ADDREF(pRecord); if (m_bAdd) GetRecords()->Add(arRecords.GetAt(i)); else GetRecords()->InsertAt(n, arRecords.GetAt(i)); } } Populate(); _SelectRows(&arRecords); } m_bAdd = false; }