ردود الذكاء الاصطناعي
سؤالك:
إجابة الشبكة العصبية:
#include <atlbase.h>
#include <atlcom.h>
#include <atlctl.h>
#include <cmath>
class CMyControl :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyControl, &CLSID_MyControl>,
public IDispatchImpl<IMyControl, &IID_IMyControl, &LIBID_MyControlLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IOleObjectImpl<CMyControl>,
public IOleInPlaceActiveObjectImpl<CMyControl>,
public IViewObjectExImpl<CMyControl>,
public IOleControlImpl<CMyControl>,
public IOleInPlaceObjectWindowlessImpl<CMyControl>,
public IPersistStreamInitImpl<CMyControl>,
public IPersistStorageImpl<CMyControl>,
public ISpecifyPropertyPagesImpl<CMyControl>,
public IQuickActivateImpl<CMyControl>,
public IDataObjectImpl<CMyControl>,
public IProvideClassInfo2Impl<&CLSID_MyControl, NULL, &LIBID_MyControlLib>,
public CComCoClass<CMyControl, &CLSID_MyControl>,
public CProxy_IMyControlEvents<CMyControl>,
public IConnectionPointContainerImpl<CMyControl>,
public IObjectSafetyImpl<CMyControl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>,
public CComCoClass<CMyControl, &CLSID_MyControl>,
public CComCoClass<CMyControl, &CLSID_MyControl>,
public CComCoClass<CMyControl, &CLSID_MyControl>
{
public:
CMyControl()
{
// Initialize properties
m_bShowGraph = false;
m_clrGraph = RGB(0, 0, 255);
m_clrBackground = RGB(255, 255, 255);
m_dMinX = 3.0;
m_dMaxX = 6.0;
m_dMinY = -5.0;
m_dMaxY = 5.0;
m_nWidth = 400;
m_nHeight = 300;
m_ptPosition.x = 100;
m_ptPosition.y = 100;
}
DECLARE_REGISTRY_RESOURCEID(IDR_MYCONTROL)
BEGIN_COM_MAP(CMyControl)
COM_INTERFACE_ENTRY(IMyControl)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IOleObject)
COM_INTERFACE_ENTRY(IOleInPlaceObject)
COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
COM_INTERFACE_ENTRY(IViewObjectEx)
COM_INTERFACE_ENTRY(IViewObject)
COM_INTERFACE_ENTRY(IOleControl)
COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY(IPersistStreamInit)
COM_INTERFACE_ENTRY(IPersistStorage)
COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
COM_INTERFACE_ENTRY(IQuickActivate)
COM_INTERFACE_ENTRY(IDataObject)
COM_INTERFACE_ENTRY(IProvideClassInfo)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
COM_INTERFACE_ENTRY(IObjectSafety)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
END_COM_MAP()
BEGIN_CONNECTION_POINT_MAP(CMyControl)
CONNECTION_POINT_ENTRY(__uuidof(_IMyControlEvents))
END_CONNECTION_POINT_MAP()
BEGIN_PROP_MAP(CMyControl)
PROP_DATA_ENTRY("ShowGraph", m_bShowGraph, VT_BOOL)
PROP_DATA_ENTRY("GraphColor", m_clrGraph, VT_COLOR)
PROP_DATA_ENTRY("BackgroundColor", m_clrBackground, VT_COLOR)
PROP_DATA_ENTRY("MinX", m_dMinX, VT_R8)
PROP_DATA_ENTRY("MaxX", m_dMaxX, VT_R8)
PROP_DATA_ENTRY("MinY", m_dMinY, VT_R8)
PROP_DATA_ENTRY("MaxY", m_dMaxY, VT_R8)
PROP_DATA_ENTRY("Width", m_nWidth, VT_I4)
PROP_DATA_ENTRY("Height", m_nHeight, VT_I4)
PROP_DATA_ENTRY("PositionX", m_ptPosition.x, VT_I4)
PROP_DATA_ENTRY("PositionY", m_ptPosition.y, VT_I4)
END_PROP_MAP()
BEGIN_MSG_MAP(CMyControl)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
MESSAGE_HANDLER(WM_RBUTTONDOWN, OnRButtonDown)
END_MSG_MAP()
// IMyControl
public:
STDMETHOD(ShowGraph)(VARIANT_BOOL bShow)
{
m_bShowGraph = bShow == VARIANT_TRUE;
Invalidate();
return S_OK;
}
STDMETHOD(get_ShowGraph)(VARIANT_BOOL* pbShow)
{
*pbShow = m_bShowGraph ? VARIANT_TRUE : VARIANT_FALSE;
return S_OK;
}
STDMETHOD(SetGraphColor)(OLE_COLOR clr)
{
m_clrGraph = clr;
Invalidate();
return S_OK;
}
STDMETHOD(get_GraphColor)(OLE_COLOR* pclr)
{
*pclr = m_clrGraph;
return S_OK;
}
STDMETHOD(SetBackgroundColor)(OLE_COLOR clr)
{
m_clrBackground = clr;
Invalidate();
return S_OK;
}
STDMETHOD(get_BackgroundColor)(OLE_COLOR* pclr)
{
*pclr = m_clrBackground;
return S_OK;
}
STDMETHOD(SetMinX)(double dMinX)
{
m_dMinX = dMinX;
Invalidate();
return S_OK;
}
STDMETHOD(get_MinX)(double* pdMinX)
{
*pdMinX = m_dMinX;
return S_OK;
}
STDMETHOD(SetMaxX)(double dMaxX)
{
m_dMaxX = dMaxX;
Invalidate();
return S_OK;
}
STDMETHOD(get_MaxX)(double* pdMaxX)
{
*pdMaxX = m_dMaxX;
return S_OK;
}
STDMETHOD(SetMinY)(double dMinY)
{
m_dMinY = dMinY;
Invalidate();
return S_OK;
}
STDMETHOD(get_MinY)(double* pdMinY)
{
*pdMinY = m_dMinY;
return S_OK;
}
STDMETHOD(SetMaxY)(double dMaxY)
{
m_dMaxY = dMaxY;
Invalidate();
return S_OK;
}
STDMETHOD(get_MaxY)(double* pdMaxY)
{
*pdMaxY = m_dMaxY;
return S_OK;
}
STDMETHOD(SetWidth)(LONG nWidth)
{
m_nWidth = nWidth;
Invalidate();
return S_OK;
}
STDMETHOD(get_Width)(LONG* pnWidth)
{
*pnWidth = m_nWidth;
return S_OK;
}
STDMETHOD(SetHeight)(LONG nHeight)
{
m_nHeight = nHeight;
Invalidate();
return S_OK;
}
STDMETHOD(get_Height)(LONG* pnHeight)
{
*pnHeight = m_nHeight;
return S_OK;
}
STDMETHOD(SetPositionX)(LONG x)
{
m_ptPosition.x = x;
return S_OK;
}
STDMETHOD(get_PositionX)(LONG* px)
{
*px = m_ptPosition.x;
return S_OK;
}
STDMETHOD(SetPositionY)(LONG y)
{
m_ptPosition.y = y;
return S_OK;
}
STDMETHOD(get_PositionY)(LONG* py)
{
*py = m_ptPosition.y;
return S_OK;
}
protected:
BOOL m_bShowGraph;
COLORREF m_clrGraph;
COLORREF m_clrBackground;
double m_dMinX;
double m_dMaxX;
double m_dMinY;
double m_dMaxY;
LONG m_nWidth;
LONG m_nHeight;
POINT m_ptPosition;
LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if (m_bShowGraph)
{
// Show the graph
// Implement code to draw the ln(x) - 5sin(2x) function graph
}
else
{
// Error: Graph is not shown
}
return 0;
}
LRESULT OnRButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if (m_bShowGraph)
{
// Hide the graph
// Implement code to hide the graph
}
else
{
// Error: Graph is not shown
}
return 0;
}
};
OBJECT_ENTRY_AUTO(__uuidof(MyControl), CMyControl)
این کد یک کنترل ActiveX با استفاده از کتابخانه ATL توسعه داده است که نمودار تابع ln(x) - 5sin(2x) را در بازه A:3 و B:6 نشان می دهد و رخدادهای کلیک کردن دکمه های چپ و راست ماوس را پردازش می کند. این کد شامل توابعی برای نمایش و مخفی کردن نمودار و پردازش رخدادهای کلیک موس است.
يرجى ملاحظة: قد لا تكون الإجابات المقدمة بواسطة الذكاء الاصطناعي دقيقة دائمًا. لا تعتمد عليها في القضايا الحساسة مثل الطب، القانون، الأمور المالية أو القضايا الأمنية. من الأفضل دائمًا الرجوع إلى المتخصصين المؤهلين عند اتخاذ القرارات المهمة. إدارة الموقع غير مسؤولة عن المحتوى الذي يتم إنتاجه تلقائيًا.