// This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) 1992-1998 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation Classes Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Microsoft Foundation Classes product. #include "stdafx.h" #include "occimpl.h" #ifdef AFX_OCC_SEG #pragma code_seg(AFX_OCC_SEG) #endif #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define new DEBUG_NEW #ifndef _AFX_NO_OCC_SUPPORT ///////////////////////////////////////////////////////////////////////////// // Private helper for read-only property exchange with OLE controls static void DDX_OCPropertyRO(CDataExchange* pDX, int nIDC, DISPID dispid, VARTYPE vt, void* pValue) { if (pDX->m_bSaveAndValidate) { CWnd* pControl = pDX->PrepareOleCtrl(nIDC); pControl->GetProperty(dispid, vt, pValue); } } ///////////////////////////////////////////////////////////////////////////// // Simple formatting to text item void AFXAPI DDX_OCText(CDataExchange* pDX, int nIDC, DISPID dispid, CString& value) { CWnd* pControl = pDX->PrepareOleCtrl(nIDC); if (pDX->m_bSaveAndValidate) pControl->GetProperty(dispid, VT_BSTR, &value); else pControl->SetProperty(dispid, VT_BSTR, (LPCTSTR)value); } void AFXAPI DDX_OCTextRO(CDataExchange* pDX, int nIDC, DISPID dispid, CString& value) { DDX_OCPropertyRO(pDX, nIDC, dispid, VT_BSTR, &value); } ///////////////////////////////////////////////////////////////////////////// // non-text properties void AFXAPI DDX_OCBool(CDataExchange* pDX, int nIDC, DISPID dispid, BOOL& value) { CWnd* pControl = pDX->PrepareOleCtrl(nIDC); if (pDX->m_bSaveAndValidate) pControl->GetProperty(dispid, VT_BOOL, &value); else pControl->SetProperty(dispid, VT_BOOL, value); } void AFXAPI DDX_OCBoolRO(CDataExchange* pDX, int nIDC, DISPID dispid, BOOL& value) { DDX_OCPropertyRO(pDX, nIDC, dispid, VT_BOOL, &value); } void AFXAPI DDX_OCInt(CDataExchange* pDX, int nIDC, DISPID dispid, int &value) { CWnd* pControl = pDX->PrepareOleCtrl(nIDC); if (pDX->m_bSaveAndValidate) pControl->GetProperty(dispid, VT_I4, &value); else pControl->SetProperty(dispid, VT_I4, value); } void AFXAPI DDX_OCIntRO(CDataExchange* pDX, int nIDC, DISPID dispid, int &value) { DDX_OCPropertyRO(pDX, nIDC, dispid, VT_I4, &value); } void AFXAPI DDX_OCInt(CDataExchange* pDX, int nIDC, DISPID dispid, long &value) { CWnd* pControl = pDX->PrepareOleCtrl(nIDC); if (pDX->m_bSaveAndValidate) pControl->GetProperty(dispid, VT_I4, &value); else pControl->SetProperty(dispid, VT_I4, value); } void AFXAPI DDX_OCIntRO(CDataExchange* pDX, int nIDC, DISPID dispid, long &value) { DDX_OCPropertyRO(pDX, nIDC, dispid, VT_I4, &value); } void AFXAPI DDX_OCShort(CDataExchange* pDX, int nIDC, DISPID dispid, short& value) { CWnd* pControl = pDX->PrepareOleCtrl(nIDC); if (pDX->m_bSaveAndValidate) pControl->GetProperty(dispid, VT_I2, &value); else pControl->SetProperty(dispid, VT_I2, value); } void AFXAPI DDX_OCShortRO(CDataExchange* pDX, int nIDC, DISPID dispid, short& value) { DDX_OCPropertyRO(pDX, nIDC, dispid, VT_I2, &value); } void AFXAPI DDX_OCColor(CDataExchange* pDX, int nIDC, DISPID dispid, OLE_COLOR& value) { CWnd* pControl = pDX->PrepareOleCtrl(nIDC); if (pDX->m_bSaveAndValidate) pControl->GetProperty(dispid, VT_COLOR, &value); else pControl->SetProperty(dispid, VT_COLOR, value); } void AFXAPI DDX_OCColorRO(CDataExchange* pDX, int nIDC, DISPID dispid, OLE_COLOR& value) { DDX_OCPropertyRO(pDX, nIDC, dispid, VT_COLOR, &value); } #endif // !_AFX_NO_OCC_SUPPORT