


#include <vcl.h>     
#pragma hdrstop

//[2010.03.12.금][생성!!!]{----------
//<GDotMatrix> 를 다루는 API 를 기술한다.
//}----------------------------------

#include  "GUI_GDotMatrix.h"

#include  "vmos_def.h"
#include  "vmos.h"
#include  "c_define.h"

//[GUI]
//{
    #include  "GDotMatrix.h"

    #include  "gui_part.h"

    #include  "ide_library.h"

//}

//[2011.12.05.월][중요수정!!!]{*******
//신형 API 방식으로 전부 새롭게 수정.
//}***********************************

void __fastcall _GUI_GDotMatrix_Create(void)
{
  //[2010.03.14.일][생성!!!]{------
  //<GDotMatrix> 를 하나 생성한다.
  //
  //[2011.12.05.월][중요수정!!!]---
  //새로운 방식으로 API 를 처리.
  //}------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU8   pMother;   //주소.
          DTU2   pGid;
          DTS4   pX;
          DTS4   pY;
          DTU4   pWidth;
          DTU4   pHeight;
          DTU1   pVisible;

      //}

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{-----------------------------------------------
  //void _GDotMatrix_생성_(void            *p생성자,
  //                       void            *p모체생성자,
  //                       unsigned short   p식별자,
  //                       int              pX,
  //                       int              pY,
  //                       unsigned int     p폭,
  //                       unsigned int     p높이,
  //                       unsigned char    p보이기감추기);
  //}-------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[void  *p모체생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pMother)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pMother, &pMother);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned short  p식별자]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (2), (DTU1 *)(&pGid)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (2);
      //}--------------------------

  //}

  //[int  pX]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pX)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[int  pY]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pY)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned int  p폭]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pWidth)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned int  p높이]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pHeight)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p보이기감추기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pVisible)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

  //}

  //[명령처리]
  //{
      //일단 확인용으로 무조건 지정 생성하는 것으로 한다.
      GDotMatrix_Create((void *)pCreator, (void *)pMother, pGid, pX, pY, pWidth, pHeight, pVisible);

  //}

}

void __fastcall _GUI_GDotMatrix_Delete(void)
{
  //[2010.03.14.일][생성!!!]{------
  //지정 <GDotMatrix> 를 삭제한다.
  //
  //[2011.12.05.월][중요수정!!!]---
  //새로운 방식으로 API 를 처리.
  //}------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;       //주소.

      //}

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{-------------------------------
  //void _GDotMatrix_삭제_(void  *p생성자);
  //}---------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

  //}

  //[명령처리]
  //{
      //일단 확인용으로 무조건 지정 생성하는 것으로 한다.
      GDotMatrix_Delete((void *)pCreator);

  //}

}

void __fastcall _GUI_GDotMatrix_Enable(void)
{
  //[2010.03.14.일][생성!!!]{----------------
  //<GDotMatrix> 의 <유효/무효> 를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-------------
  //새로운 방식으로 API 를 처리.
  //}----------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pEnable;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{---------------------------------------------------
  //unsigned char _GDotMatrix_유효_(void           *p생성자,
  //                                unsigned char   p유효무효,
  //                                unsigned char   p쓰기읽기);
  //}-----------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p유효무효]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pEnable)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          //[2018.08.22.수][수정!!!]
          //새로 만든 함수 사용.
          GDotMatrix->_Enable(pEnable);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->Enabled;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_Visible(void)
{
  //[2010.03.14.일][생성!!!]{--------------------
  //<GDotMatrix> 의 <보이기/감추기> 를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-----------------
  //새로운 방식으로 API 를 처리.
  //}--------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pVisible;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{--------------------------------------------------------
  //unsigned char _GDotMatrix_보이기_(void           *p생성자,
  //                                  unsigned char   p보이기감추기,
  //                                  unsigned char   p쓰기읽기);
  //}----------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p보이기감추기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pVisible)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->Visible = pVisible;

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->Visible;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_X(void)
{
  //[2010.03.14.일][생성!!!]{-----------
  //<GDotMatrix> 의 <Left> 를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]--------
  //새로운 방식으로 API 를 처리.
  //}-----------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTS4   pX;
          DTU1   pWR;

          //반환값
          DTS4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{--------------------------------------
  //int _GDotMatrix_X_(void           *p생성자,
  //                   int             pX,
  //                   unsigned char   p쓰기읽기);
  //}----------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[int  pX]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pX)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_Left(pX);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->Left;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_Y(void)
{
  //[2010.03.14.일][생성!!!]{----------
  //<GDotMatrix> 의 <Top> 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-------
  //새로운 방식으로 API 를 처리.
  //}----------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTS4   pY;
          DTU1   pWR;

          //반환값
          DTS4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{--------------------------------------
  //int _GDotMatrix_Y_(void           *p생성자,
  //                   int             pY,
  //                   unsigned char   p쓰기읽기);
  //}----------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[int  pY]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pY)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_Top(pY);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->Top;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_Width(void)
{
  //[2010.03.14.일][생성!!!]{------------
  //<GDotMatrix> 의 <Width> 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]---------
  //새로운 방식으로 API 를 처리.
  //}------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU4   pWidth;
          DTU1   pWR;

          //반환값
          DTU4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{------------------------------------------------
  //unsigned int _GDotMatrix_폭_(void           *p생성자,
  //                             unsigned int    p폭,
  //                             unsigned char   p쓰기읽기);
  //}--------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  p폭]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pWidth)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_Width(pWidth);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->Width;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_Height(void)
{
  //[2010.03.14.일][생성!!!]{-------------
  //<GDotMatrix> 의 <Height> 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]----------
  //새로운 방식으로 API 를 처리.
  //}-------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU4   pHeight;
          DTU1   pWR;

          //반환값
          DTU4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{-------------------------------------------------
  //unsigned int _GDotMatrix_높이_(void          *p생성자,
  //                               unsigned int   p높이,
  //                               unsigned char  p쓰기읽기);
  //}---------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  p높이]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pHeight)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_Height(pHeight);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->Height;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_Border(void)
{
  //[2010.03.14.일][생성!!!]{---------------------
  //<GDotMatrix> 의 테두리 사용 유/무를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]------------------
  //새로운 방식으로 API 를 처리.
  //}---------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pUse;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{-----------------------------------------------------
  //unsigned char _GDotMatrix_테두리_(void           *p생성자,
  //                                  unsigned char   p사용유무,
  //                                  unsigned char   p쓰기읽기);
  //}-------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p사용유무]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pUse)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_Border(pUse);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_border;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_BorderColor(void)
{
  //[2010.03.14.일][생성!!!]{---------------
  //<GDotMatrix> 의 [테두리색] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]------------
  //새로운 방식으로 API 를 처리.
  //}---------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU4   pColor;
          DTU1   pWR;

          //반환값
          DTU4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{------------------------------------------------------
  //unsigned int _GDotMatrix_테두리색_(void           *p생성자,
  //                                   unsigned int    p색상,
  //                                   unsigned char   p쓰기읽기);
  //}--------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  p색상]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pColor)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_BorderColor(pColor);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_borderColor;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_BackColor(void)
{
  //[2010.03.14.일][생성!!!]{-------------
  //<GDotMatrix> 의 [배경색] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]----------
  //새로운 방식으로 API 를 처리.
  //}-------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU4   pColor;
          DTU1   pWR;

          //반환값
          DTU4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{----------------------------------------------------
  //unsigned int _GDotMatrix_배경색_(void           *p생성자,
  //                                 unsigned int    p색상,
  //                                 unsigned char   p쓰기읽기);
  //}------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  p색상]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pColor)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_BackColor(pColor);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_backColor;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_BalloonHelpUse(void)
{
  //[2010.03.14.일][생성!!!]{---------------------------
  //<GDotMatrix> 의 [풍선도움말] 사용 유/무를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]------------------------
  //새로운 방식으로 API 를 처리.
  //}---------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pUse;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{---------------------------------------------------------
  //unsigned char _GDotMatrix_풍선도움말_(void           *p생성자,
  //                                      unsigned char   p사용유무,
  //                                      unsigned char   p쓰기읽기);
  //}-----------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p사용유무]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pUse)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_BalloonHelpUse(pUse);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_balloonHelpUse;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_BalloonHelpStr(void)
{
  //[2010.03.14.일][생성!!!]{------------------------
  //<GDotMatrix> 의 [풍선도움말 문자열] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]---------------------
  //새로운 방식으로 API 를 처리.
  //
  //[2018.06.22.금][중요수정!!!]---------------------
  //}------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU8   pStr;      //주소.

          DTU1   pWR;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{------------------------------------------------------
  //void _GDotMatrix_풍선도움말문자열_(void           *p생성자,
  //                                   char           *pr문자열,
  //                                   unsigned char   p쓰기읽기);
  //}--------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[char  *pr문자열]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pStr)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pStr, &pStr);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_BalloonHelpStr((char *)pStr);

        } break;

        case d_Rd :
        {
          //직접 개체를 처리한다.
          if(GDotMatrix->_balloonHelpStr == NULL)
          {
            //[2018.06.22.금][중요추가!!!]{-------------------------
            //처음에는 사용하지 않는 상태로 NULL 이므로 "" 를 반한.
            //}-----------------------------------------------------

            STR_Assign((char *)pStr, "");

          }
          else
          {
            STR_Assign((char *)pStr, GDotMatrix->_balloonHelpStr);

          }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_Led_Make(void)
{
  //[2010.03.14.일][생성!!!]{--------------------
  //<GDotMatrix> 에서 사용할 [전구] 를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-----------------
  //새로운 방식으로 API 를 처리.
  //}--------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pKind;
          DTU2   pSize;
          DTU4   pOnColor;
          DTU4   pOffColor;
          DTU1   pBorder;
          DTU4   pBorderColor;
          DTU4   pBackColor;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{------------------------------------------------
  //void _GDotMatrix_전구설정_(void            *p생성자,
  //                           unsigned char    p종류,
  //                           unsigned short   p크기,
  //                           unsigned int     p켜기색,
  //                           unsigned int     p끄기색,
  //                           unsigned char    p테두리유무,
  //                           unsigned int     p테두리색,
  //                           unsigned int     p배경색);
  //}--------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p종류]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pKind)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned short  p크기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (2), (DTU1 *)(&pSize)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (2);
      //}--------------------------

  //}

  //[unsigned int  p켜기색]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pOnColor)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned int  p끄기색]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pOffColor)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p테두리유무]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pBorder)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned int  p테두리색]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pBorderColor)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned int  p배경색]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pBackColor)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      //직접 개체를 처리한다.
      GDotMatrix->_Led_Make(pKind, pSize, pOnColor, pOffColor, pBorder, pBorderColor, pBackColor);

  //}

}

void __fastcall _GUI_GDotMatrix_Led_Make_Info(void)
{
  //[2018.07.15.일][생성!!!]{---------------
  //<GDotMatrix> 의 [전구] 설정내용을 반환.
  //}---------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.

          //사용 인수가 모두 [포인터] 이므로 전부 DTU8 로 설정.
          DTU8   rKind;
          DTU8   rSize;
          DTU8   rOnColor;
          DTU8   rOffColor;
          DTU8   rBorder;
          DTU8   rBorderColor;
          DTU8   rBackColor;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{----------------------------------------------------
  //void _GDotMatrix_전구설정정보_(void            *p생성자,
  //                               unsigned char   *r종류,
  //                               unsigned short  *r크기,
  //                               unsigned int    *r켜기색,
  //                               unsigned int    *r끄기색,
  //                               unsigned char   *r테두리유무,
  //                               unsigned int    *r테두리색,
  //                               unsigned int    *r배경색);
  //}------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  *r종류]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&rKind)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(rKind, &rKind);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned short  *r크기]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&rSize)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(rSize, &rSize);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  *r켜기색]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&rOnColor)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(rOnColor, &rOnColor);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  *r끄기색]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&rOffColor)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(rOffColor, &rOffColor);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  *r테두리유무]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&rBorder)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(rBorder, &rBorder);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  *r테두리색]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&rBorderColor)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(rBorderColor, &rBorderColor);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  *r배경색]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&rBackColor)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(rBackColor, &rBackColor);

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      //직접 개체를 처리한다.
      GDotMatrix->_Led_Make_Info((unsigned char  *)rKind,
                                 (unsigned short *)rSize,
                                 (unsigned int   *)rOnColor,
                                 (unsigned int   *)rOffColor,
                                 (bool           *)rBorder,
                                 (unsigned int   *)rBorderColor,
                                 (unsigned int   *)rBackColor);

  //}

}

void __fastcall _GUI_GDotMatrix_LedOrgX(void)
{
  //[2010.03.14.일][생성!!!]{---------------------------
  //<GDotMatrix> 의 [전구 배치 시작위치 X] 를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]------------------------
  //새로운 방식으로 API 를 처리.
  //}---------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTS4   pX;
          DTU1   pWR;

          //반환값
          DTS4   pReturn;

      //}    

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{----------------------------------------------
  //int _GDotMatrix_전구배치X_(void           *p생성자,
  //                           int             pX,
  //                           unsigned char   p쓰기읽기);
  //}------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[int  pX]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pX)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_LedOrgX(pX);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_ledOrgX;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_LedOrgY(void)
{
  //[2010.03.14.일][생성!!!]{---------------------------
  //<GDotMatrix> 의 [전구 배치 시작위치 Y] 를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]------------------------
  //새로운 방식으로 API 를 처리.
  //}---------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTS4   pY;
          DTU1   pWR;

          //반환값
          DTS4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{----------------------------------------------
  //int _GDotMatrix_전구배치Y_(void           *p생성자,
  //                           int             pY,
  //                           unsigned char   p쓰기읽기);
  //}------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[int  pY]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pY)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_LedOrgY(pY);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_ledOrgY;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_LedGap(void)
{
  //[2010.03.14.일][생성!!!]{---------------------
  //<GDotMatrix> 의 [전구 배치 간격] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]------------------
  //새로운 방식으로 API 를 처리.
  //}---------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTS2   pValue;
          DTU1   pWR;

          //반환값
          DTS2   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;


  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{----------------------------------------------------
  //short _GDotMatrix_전구배치간격_(void            *p생성자,
  //                                short            p값,
  //                                unsigned char    p쓰기읽기);
  //}------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[short  p값]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (2), (DTU1 *)(&pValue)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (2);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_LedGap(pValue);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_ledGap;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (2), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_LedTransparent(void)
{
  //[2010.03.14.일][생성!!!]{---------------------
  //<GDotMatrix> 의 [전구 투명 속성] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]------------------
  //새로운 방식으로 API 를 처리.
  //}---------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pUse;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{-------------------------------------------------------
  //unsigned char _GDotMatrix_전구투명_(void           *p생성자,
  //                                    unsigned char   p사용유무,
  //                                    unsigned char   p쓰기읽기);
  //}---------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p사용유무]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pUse)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_LedTransparent(pUse);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_ledTransparent;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_LedTransparentColor(void)
{
  //[2010.03.14.일][생성!!!]{------------------
  //<GDotMatrix> 의 [전구 투명색] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]---------------
  //새로운 방식으로 API 를 처리.
  //}------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU4   pColor;
          DTU1   pWR;

          //반환값
          DTU4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{--------------------------------------------------------
  //unsigned int _GDotMatrix_전구투명색_(void           *p생성자,
  //                                     unsigned int    p색상,
  //                                     unsigned char   p쓰기읽기);
  //}----------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  p색상]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pColor)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_LedTransparentColor(pColor);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_ledTransparentColor;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_DotWidth(void)
{
  //[2010.03.14.일][생성!!!]{------------------------
  //<GDotMatrix> 의 [실제 그림 영역 폭] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]---------------------
  //새로운 방식으로 API 를 처리.
  //}------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU4   pValue;
          DTU1   pWR;

          //반환값
          DTU4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{--------------------------------------------------------
  //unsigned int _GDotMatrix_그림영역폭_(void           *p생성자,
  //                                     unsigned int    p값,
  //                                     unsigned char   p쓰기읽기);
  //}----------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  p값]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pValue)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_DotWidth(pValue);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_dotBmp_->Width;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_DotHeight(void)
{
  //[2010.03.14.일][생성!!!]{--------------------------
  //<GDotMatrix> 의 [실제 그림 영역 높이] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-----------------------
  //새로운 방식으로 API 를 처리.
  //}--------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU4   pValue;
          DTU1   pWR;

          //반환값
          DTU4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{----------------------------------------------------------
  //unsigned int _GDotMatrix_그림영역높이_(void           *p생성자,
  //                                       unsigned int    p값,
  //                                       unsigned char   p쓰기읽기);
  //}------------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  p값]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pValue)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_DotHeight(pValue);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_dotBmp_->Height;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_PrintStr(void)
{
  //[2010.03.14.일][생성!!!]{--------------------------
  //<GDotMatrix> 의 지정 위치에  [문자열] 을 출력한다.
  //
  //[2011.12.05.월][중요수정!!!]-----------------------
  //새로운 방식으로 API 를 처리.
  //}--------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTS4   pX;
          DTS4   pY;
          DTU8   pStr;      //주소.

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{-------------------------------------
  //void _GDotMatrix_문자열출력_(void  *p생성자,
  //                             int    pX,
  //                             int    pY,
  //                             char  *p문자열);
  //}---------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[int  pX]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pX)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[int  pY]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pY)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[char  *p문자열]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pStr)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pStr, &pStr);

  //}


  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      //직접 개체를 처리한다.
      GDotMatrix->_PrintStr(pX, pY, (char *)pStr);

  //}

}

void __fastcall _GUI_GDotMatrix_RotStr(void)
{
  //[2010.03.14.일][생성!!!]{------------------
  //<GDotMatrix> 의 [이동 문자열] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]---------------
  //새로운 방식으로 API 를 처리.
  //
  //[2018.06.24.일][수정!!!]-------------------
  //}------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU8   pStr;      //주소.

          DTU1   pWR;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{------------------------------------------------
  //void _GDotMatrix_이동문자열_(void           *p생성자,
  //                             char           *pr문자열,
  //                             unsigned char   p쓰기읽기);
  //}--------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[char  *pr문자열]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pStr)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pStr, &pStr);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_RotStr((char *)pStr);

        } break;

        case d_Rd :
        {
          //직접 개체를 처리한다.
          if(GDotMatrix->_rotStr == NULL)
          {
            //[2018.06.24.금][중요추가!!!]{-------------------------
            //처음에는 사용하지 않는 상태로 NULL 이므로 "" 를 반한.
            //}-----------------------------------------------------

            STR_Assign((char *)pStr, "");

          }
          else
          {
            STR_Assign((char *)pStr, GDotMatrix->_rotStr);

          }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_RotGap(void)
{
  //[2010.03.14.일][생성!!!]{--------------------------
  //<GDotMatrix> 의 [이동 문자열 간 간격] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-----------------------
  //새로운 방식으로 API 를 처리.
  //}--------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU2   pValue;
          DTU1   pWR;

          //반환값
          DTU2   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{---------------------------------------------------------------
  //unsigned short _GDotMatrix_이동문자열간격_(void            *p생성자,
  //                                           unsigned short   p값,
  //                                           unsigned char    p쓰기읽기);
  //}-----------------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned short  p값]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (2), (DTU1 *)(&pValue)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (2);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_RotGap(pValue);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_rotGap;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (2), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_RotTime(void)
{
  //[2010.03.14.일][생성!!!]{----------------------------
  //<GDotMatrix> 의 [문자열 이동 시간 간격] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-------------------------
  //새로운 방식으로 API 를 처리.
  //}----------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU4   pValue;
          DTU1   pWR;

          //반환값
          DTU4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{----------------------------------------------------------
  //unsigned int _GDotMatrix_이동시간간격_(void           *p생성자,
  //                                       unsigned int    p밀리초,
  //                                       unsigned char   p쓰기읽기);
  //}------------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  p밀리초]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pValue)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_RotTime(pValue);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->rotate_Timer->Interval;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_RotStep(void)
{
  //[2010.03.14.일][생성!!!]{----------------
  //<GDotMatrix> 의 [이동 간격] 을 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-------------
  //새로운 방식으로 API 를 처리.
  //}----------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU4   pValue;
          DTU1   pWR;

          //반환값
          DTU4   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{------------------------------------------------------
  //unsigned int _GDotMatrix_이동간격_(void           *p생성자,
  //                                   unsigned int    p값,
  //                                   unsigned char   p쓰기읽기);
  //}--------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned int  p값]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (4), (DTU1 *)(&pValue)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (4);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_RotStep(pValue);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_rotStep;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (4), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_RotTimer(void)
{
  //[2010.03.14.일][생성!!!]{----------------------------
  //<GDotMatrix> 의 [문자열 이동 켜기/끄기] 를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-------------------------
  //새로운 방식으로 API 를 처리.
  //}----------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pUse;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{---------------------------------------------------
  //unsigned char _GDotMatrix_이동_(void           *p생성자,
  //                                unsigned char   p켜기끄기,
  //                                unsigned char   p쓰기읽기);
  //}-----------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p켜기끄기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pUse)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[개체 위치 얻기]
      //{
          //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
          GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      //}

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_RotTimer(pUse);

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              //[2018.08.22.수][수정!!!]
              //새로 추가된 <_rotUse> 사용.
              pReturn = GDotMatrix->_rotUse;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

//[전역속성]
//{
    //[2019.01.13.일][추가]{-----------------------------
    //원본은 <GDotMatrix.cpp> 에 전역변수로 선언돼 있다.
    //}--------------------------------------------------

    extern bool  _tGDotMatrix_All_Pause;

//}

void __fastcall _GUI_GDotMatrix_AllPause(void)
{
  //[2019.01.13.일][생성!!!]{-------------
  //전체 <GDotMatrix> 의 [일시정지] 제어.
  //}-------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          DTU1   pPause;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //}

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{-----------------------------------------------------------
  //unsigned char _GDotMatrix_전체_일시정지_(unsigned char  p일시정지,
  //                                         unsigned char  p쓰기읽기);
  //}-------------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[!]{--------------------------------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[unsigned char  p일시정지]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pPause)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      switch(pWR)
      {
        case d_Wr :
        {
          _tGDotMatrix_All_Pause = pPause;

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = _tGDotMatrix_All_Pause;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_EvtMDown(void)
{
  //[2010.03.23.화][생성!!!]{----------------------------
  //<GDotMatrix> 의 해당 이벤트의 사용 유/무를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-------------------------
  //새로운 방식으로 API 를 처리.
  //}----------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pUse;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{-----------------------------------------------------------
  //unsigned char _GDotMatrix_이벤트_MDown_(void           *p생성자,
  //                                        unsigned char   p사용유무,
  //                                        unsigned char   p쓰기읽기);
  //}-------------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p사용유무]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pUse)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
      GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_evtMDown = pUse;

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_evtMDown;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_EvtMUp(void)
{
  //[2010.03.23.화][생성!!!]{----------------------------
  //<GDotMatrix> 의 해당 이벤트의 사용 유/무를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-------------------------
  //새로운 방식으로 API 를 처리.
  //}----------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pUse;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //]

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{---------------------------------------------------------
  //unsigned char _GDotMatrix_이벤트_MUp_(void           *p생성자,
  //                                      unsigned char   p사용유무,
  //                                      unsigned char   p쓰기읽기);
  //}-----------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p사용유무]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pUse)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
      GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_evtMUp = pUse;

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_evtMUp;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_EvtMClick(void)
{
  //[2010.03.23.화][생성!!!]{----------------------------
  //<GDotMatrix> 의 해당 이벤트의 사용 유/무를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-------------------------
  //새로운 방식으로 API 를 처리.
  //}----------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pUse;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{------------------------------------------------------------
  //unsigned char _GDotMatrix_이벤트_MClick_(void           *p생성자,
  //                                         unsigned char   p사용유무,
  //                                         unsigned char   p쓰기읽기);
  //}--------------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p사용유무]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pUse)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
      GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_evtMClick = pUse;

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_evtMClick;

          //}

          //[값] 반환.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_EvtMEnter(void)
{
  //[2010.03.23.화][생성!!!]{----------------------------
  //<GDotMatrix> 의 해당 이벤트의 사용 유/무를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-------------------------
  //새로운 방식으로 API 를 처리.
  //}----------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pUse;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{------------------------------------------------------------
  //unsigned char _GDotMatrix_이벤트_MEnter_(void           *p생성자,
  //                                         unsigned char   p사용유무,
  //                                         unsigned char   p쓰기읽기);
  //}--------------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p사용유무]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pUse)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
      GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_evtMEnter = pUse;

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_evtMEnter;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}

void __fastcall _GUI_GDotMatrix_EvtMLeave(void)
{
  //[2010.03.23.화][생성!!!]{----------------------------
  //<GDotMatrix> 의 해당 이벤트의 사용 유/무를 설정한다.
  //
  //[2011.12.05.월][중요수정!!!]-------------------------
  //새로운 방식으로 API 를 처리.
  //}----------------------------------------------------

  //[VAR]
  //{
      //[기본]
      //{
          class  VMOS  *vmos;

          //[2011.12.05.월][수정!!!]
          //<@LOCAL> 을 기본으로 한 [절대주소](대문자로 절대주소임을 구분하자).
          DTU8   ADR;

      //}

      //[API]
      //{
          //주소는 전부 MCU 상의 주소다.
          DTU8   pCreator;  //주소.
          DTU1   pUse;
          DTU1   pWR;

          //반환값
          DTU1   pReturn;

      //}

      //대상개체.
      TGDotMatrix_Form  *GDotMatrix;

  //}

  //[VMOS 위치 얻기]{--
  VMOS_GetPtr(&vmos);
  //}------------------

  //[함수형]{------------------------------------------------------------
  //unsigned char _GDotMatrix_이벤트_MLeave_(void           *p생성자,
  //                                         unsigned char   p사용유무,
  //                                         unsigned char   p쓰기읽기);
  //}--------------------------------------------------------------------

  //[기본주소 얻기]
  //{
      //[2011.12.05.월][추가!!!]{-----------------------------------
      //<@LOCAL> 과 같은 [절대주소] 값.
      //함수 [인수] 등 모든 지역변수는 <@LOCAL> 부터 시작되기 때문.
      //첫번째 [지역변수(인수포함)] 의 [절대주소] 가 된다.
      //}-----------------------------------------------------------

      ADR = (vmos->regREG_[d_VM_Reg_LOCAL]);

  //}

  //[void  *p생성자]
  //{
      //[절대주소] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (8), (DTU1 *)(&pCreator)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //MCU 내부적으로처리 하므로 실제 물리주소로 바꾼다.
      vmos->VMOS_Conv_AdrToSysAdr(pCreator, &pCreator);

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (8);
      //}--------------------------

  //}

  //[unsigned char  p사용유무]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pUse)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[unsigned char  p쓰기읽기]
  //{
      //[값] 읽기.
      if(vmos->VMOS_WrRd(d_Rd, ADR, (1), (DTU1 *)(&pWR)) != true)
      { vmos->regSysFuncCallResult = d_False; return; }

      //[다음 주소 계산]{----------
      //현재 [인수] 크기를 더한다.
      ADR += (1);
      //}--------------------------

  //}

  //[명령처리]
  //{
      //[생성자] 의 정보로 해당 개체의 위치를 얻는다.
      GDotMatrix = (TGDotMatrix_Form *)(*((DTU8 *)pCreator));

      switch(pWR)
      {
        case d_Wr :
        {
          //직접 개체를 처리한다.
          GDotMatrix->_evtMLeave = pUse;

        } break;

        case d_Rd :
        {
          //[반환값 얻기]
          //{
              pReturn = GDotMatrix->_evtMLeave;

          //}

          //[값] 쓰기.
          if(vmos->VMOS_WrRd(d_Wr, ADR, (1), (DTU1 *)(&pReturn)) != true)
          { vmos->regSysFuncCallResult = d_False; return; }

        } break;

      }

  //}

}




