<HTML>
<HEAD>
<TITLE>Source</TITLE></HEAD><BODY><H6><A href=main.html>Contents page</A></H6><P>
<H6><A href=Main.html>Index</A></H6><P>
<H1>Source</H1>
<HR>
  //////////////////////////////////////////////////////////////////////////////<PRE>
  // gadget.cpp
  //
  // Jeffry A Worth
  // Nov 9, 1995
  //////////////////////////////////////////////////////////////////////////////<P>

  //////////////////////////////////////////////////////////////////////////////
  // INCLUDES 
  #include &quot;aframe:include/gadget.hpp&quot;<P>

  //////////////////////////////////////////////////////////////////////////////
  //<P>

  AFGadget::AFGadget()
  {
    m_pgadget = NULL;
    m_flags = NULL;
  }<P>

  AFGadget::~AFGadget()
  {
    // When the Window object is destroyed, all AFGadgets get their DestroyObject
    // method called.  To remove the CGadget from the window without destroying
    // the window, the user must call the DestroyObject method.
  }<P>

  void AFGadget::DestroyObject()
  {
    if(m_pgadget &amp;&amp; (!(m_flags &amp; AFGADGET_OWNERSTRUCT)) ) {
      RemoveGadget();
      delete m_pgadget;
      m_pgadget = NULL;
      m_flags = NULL;
    }
  }<P>

  void AFGadget::Create(AFWindow* pwindow, AFRect *rect, ULONG id)
  {
    m_pwindow = pwindow;
    m_pgadget = new struct Gadget;
    m_pgadget-&gt;NextGadget = NULL;
    m_pgadget-&gt;LeftEdge = rect-&gt;TopLeft()-&gt;m_x;
    m_pgadget-&gt;TopEdge = rect-&gt;TopLeft()-&gt;m_y;
    m_pgadget-&gt;Width = rect-&gt;Width();
    m_pgadget-&gt;Height = rect-&gt;Height();
    m_pgadget-&gt;GadgetID = id;
    FillGadgetStruct(m_pgadget);
    m_pgadget-&gt;UserData = this;<P>

    // Gadget Tracking - Not implemented yet!
    //m_pwindow-&gt;m_pgadgets = new AFNode(m_pgadget,m_pwindow-&gt;m_pgadgets);<P>

    AddGadget();
    return;
  }<P>

  void AFGadget::Create(AFWindow* pwindow, LPGadget psgadget)
  {
    // Set up OWNERSTRUCT Gadget
    m_pgadget = psgadget;
    m_pwindow = pwindow;
    m_flags |= AFGADGET_OWNERSTRUCT;
    psgadget-&gt;UserData = this;<P>

    // Gadget Tracking - Not implemented yet!
    // m_pwindow-&gt;m_pgadgets = new CNode(m_pgadget,m_pwindow-&gt;m_pgadgets);<P>

    AddGadget();
  }<P>

  void AFGadget::FillGadgetStruct(LPGadget psgadget)
  {
    psgadget-&gt;Flags = GFLG_GADGHCOMP;
    psgadget-&gt;Activation = GACT_RELVERIFY | GACT_IMMEDIATE;
    psgadget-&gt;GadgetType = GTYP_BOOLGADGET;
    psgadget-&gt;GadgetRender = NULL;
    psgadget-&gt;SelectRender = NULL;
    psgadget-&gt;GadgetText = NULL;
    psgadget-&gt;MutualExclude = NULL;
    psgadget-&gt;SpecialInfo = NULL;
    return;
  }<P>

  void AFGadget::AddGadget()
  {
    ::AddGadget(m_pwindow-&gt;m_pWindow,m_pgadget,-1);
  }<P>

  void AFGadget::RemoveGadget()
  {
    ::RemoveGadget(m_pwindow-&gt;m_pWindow,m_pgadget);
  }
<HR>
