
//[2012.07.08.일][생성!!!]{---
//항목줄 구성.
//}--------------------------

//[!]{--------------------
#include "GUI\GUI_항목줄.h"
//}-----------------------

#include "함수묶음.h"

#include "GUI\GUI.h"

#include "일반함수.h"
#include "색상정의.h"
#include "전역정보.h"

//[2012.08.15.수][추가!!!]
#include "제작정보.h"

void GUI_생성자_항목줄(void)
{
  //[2012.07.08.일][생성!!!]{---
  //항목줄 구성.
  //}--------------------------

  //[VAR]
  //{
      //[2011.10.18.화][수정!!!]
      //[문서목록] 등 대량의 문자열을 처리 가능하도록 크기를 늘린다.
      char  문자열[1024*4];

      //[2012.07.16.월][추가!!!]
      char  그림경로[1024];
      char  그림경로이름확장자[1024];

  //}

  //[GUI/전역변수]{------
  struct 전역정보  *gv;
  struct GUI     *gui;
  전역정보_위치얻기(&gv);
  GUI_위치얻기(&gui);
  //}------------------

  //[편집기]
  //{
      //[2012.07.16.월][수정!!!]{---------------------------------------
      //가장 처음에 [편집기] 관련이 배치 되므로 [통신포트] 는 [풍선도움말] 앞에 배치.
      //}--------------------------------------------------------------

      //[Lb_편집기]
      //{
          _GLabel_생성_(gui->항목줄.Lb_편집기, gui->기본틀.GVmos, GID_생성(),
                       2, 5,
                       100, 17,
                       true);
          _GLabel_제목_(gui->항목줄.Lb_편집기, "편집기:", d_쓰기);
          _GLabel_자동폭_(gui->항목줄.Lb_편집기, true, d_쓰기);
          _GLabel_문자색_(gui->항목줄.Lb_편집기, clGray, d_쓰기);

      //}

      //[Btn_편집기보이기]
      //{
          _GButton_생성_(gui->항목줄.Btn_편집기보이기, gui->기본틀.GVmos, GID_생성(),
                        _GLabel_X_(gui->항목줄.Lb_편집기, 0, d_읽기) + _GLabel_폭_(gui->항목줄.Lb_편집기, 0, d_읽기),
                        4,
                        50,
                        17,
                        true);
          _GButton_제목_(gui->항목줄.Btn_편집기보이기, "보이기", d_쓰기);
          //_GButton_테두리색_(gui->항목줄.Btn_편집기보이기, clBlack2, d_쓰기);
          _GButton_제목자동위치_(gui->항목줄.Btn_편집기보이기, false, d_쓰기);
          _GButton_제목위치X_(gui->항목줄.Btn_편집기보이기, (50/2 - (12*3)/2), d_쓰기);
          _GButton_제목위치Y_(gui->항목줄.Btn_편집기보이기, 3, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->항목줄.Btn_편집기보이기, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              //[2012.07.31.화][추가!!!]
              _GButton_풍선도움말문자열_
              (gui->항목줄.Btn_편집기보이기,
               "[편집기] 를 보여줍니다(보여지는 위치는 최종 작업위치).",
               d_쓰기);

              _GButton_풍선도움말_(gui->항목줄.Btn_편집기보이기, false, d_쓰기);

          //}

      //}

      //[Btn_편집기결합]
      //{
          _GButton_생성_(gui->항목줄.Btn_편집기결합, gui->기본틀.GVmos, GID_생성(),
                        _GButton_X_(gui->항목줄.Btn_편집기보이기, 0, d_읽기) + _GButton_폭_(gui->항목줄.Btn_편집기보이기, 0, d_읽기) + 2,
                        4,
                        50,
                        17,
                        true);
          _GButton_제목_(gui->항목줄.Btn_편집기결합, "결합", d_쓰기);
          //_GButton_테두리색_(gui->항목줄.Btn_편집기결합, clBlack2, d_쓰기);
          _GButton_제목자동위치_(gui->항목줄.Btn_편집기결합, false, d_쓰기);
          _GButton_제목위치X_(gui->항목줄.Btn_편집기결합, (50/2 - (12*3)/2) + 12, d_쓰기);
          _GButton_제목위치Y_(gui->항목줄.Btn_편집기결합, 3, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->항목줄.Btn_편집기결합, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              //[2012.07.31.화][추가!!!]
              _GButton_풍선도움말문자열_
              (gui->항목줄.Btn_편집기결합,
               "[편집기] 를 [제어판] 아래에 붙여서 보여줍니다.\r\n"
               "단, [화면 영역] 을 벗어난 경우 [화면 영역] 안에 위치하도록 [폭/높이] 가 자동 조정되며\r\n"
               "확인상자([v])를 선택하는 경우 [편집기] 가 [제어판] 이동시 아래에 항상 붙어다니게 됩니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->항목줄.Btn_편집기결합, false, d_쓰기);

          //}

      //}

      //[Chk_편집기결합]
      //{
          _GCheckButton_생성_(gui->항목줄.Chk_편집기결합, gui->항목줄.Btn_편집기결합, GID_생성(),
                             3,
                             3,
                             true);
          _GCheckButton_확인_(gui->항목줄.Chk_편집기결합, true, d_쓰기);

          //[이벤트]
          //{
              _GCheckButton_이벤트_MClick_(gui->항목줄.Chk_편집기결합, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              //[2012.07.31.화][추가!!!]{-------------------------------------------
              //<Btn_편집기결합> 안에 위치하여 항상 마지막에 <Btn_편집기결합> 의 [풍선도움말] 이
              //보여지므로 여기서는 설정하지 않는다.
              //이 설명은 <Btn_편집기결합> 안에 아예 같이 넣었다.
              //}------------------------------------------------------------------

          //}

      //}

  //}

  //[설정]
  //{
      //[그림 경로 얻기]
      //{
          //실행중인 맷돌통합개발환경 경로 얻기.
          _Ide_실행경로_(그림경로);

          //그림경로 합성.
          _Str_더하기_(그림경로, "sysbmp\\control\\");

      //}

      //[BmpBtn_설정]
      //{
          _GBmpButton_생성_(gui->항목줄.BmpBtn_설정, gui->기본틀.GVmos, GID_생성(),
                           _GButton_X_(gui->항목줄.Btn_편집기결합, 0, d_읽기) + _GButton_폭_(gui->항목줄.Btn_편집기결합, 0, d_읽기) + 10,
                           4,
                           12,
                           17,
                           true);

          _GBmpButton_테두리_(gui->항목줄.BmpBtn_설정, false, d_쓰기);

          //[그림 올리기]
          //{
              //올릴 그림 경로이름확장자 합성.
              _Str_합치기_(그림경로이름확장자, 그림경로, "trigger_down.bmp");

              _GBmpButton_그림지정_(gui->항목줄.BmpBtn_설정, 그림경로이름확장자);
              _GBmpButton_그림위치X_(gui->항목줄.BmpBtn_설정, 0, d_쓰기);
              _GBmpButton_그림위치Y_(gui->항목줄.BmpBtn_설정, 2, d_쓰기);

          //}

          //[이벤트]
          //{
              _GBmpButton_이벤트_MClick_(gui->항목줄.BmpBtn_설정, true, d_쓰기);

          //}

      //}

      //[Lb_설정]
      //{
          _GLabel_생성_(gui->항목줄.Lb_설정, gui->기본틀.GVmos, GID_생성(),
                       _GBmpButton_X_(gui->항목줄.BmpBtn_설정, 0, d_읽기) + _GBmpButton_폭_(gui->항목줄.BmpBtn_설정, 0, d_읽기),
                       5,
                       100,
                       17,
                       true);
          _GLabel_제목_(gui->항목줄.Lb_설정, "제어기/설정", d_쓰기);
          _GLabel_자동폭_(gui->항목줄.Lb_설정, true, d_쓰기);
          _GLabel_문자색_(gui->항목줄.Lb_설정, clGray, d_쓰기);

      //}

      //[List_설정]
      //{
          _GList_생성_(gui->항목줄.List_설정, NULL, GID_생성(),
                      _GButton_X_(gui->항목줄.BmpBtn_설정, 0, d_읽기),
                      _GButton_Y_(gui->항목줄.BmpBtn_설정, 0, d_읽기) + _GButton_높이_(gui->항목줄.BmpBtn_설정, 0, d_읽기) - 1,
                      _GButton_폭_(gui->항목줄.BmpBtn_설정, 0, d_읽기),
                      100,
                      false);

          _GList_전체항목_(gui->항목줄.List_설정,
                         "현재 상태를 제어기 시작 상태로 고정\r\n"
                         "제어기 초기화\r\n"
                         "----------------------------\r\n"
                         "검증시간(ms) 설정",
                         d_쓰기);

          _GList_메뉴사용_(gui->항목줄.List_설정, true, d_쓰기);
          _GList_자동폭_(gui->항목줄.List_설정, true, d_쓰기);
          _GList_자동높이_(gui->항목줄.List_설정, true, d_쓰기);
          _GList_영점X_(gui->항목줄.List_설정, 4, d_쓰기);
          //_GList_영점Y_(gui->항목줄.List_설정, 2, d_쓰기);

          _GList_임시선택문자색_(gui->항목줄.List_설정, clWhite, d_쓰기);
          _GList_임시선택배경색_(gui->항목줄.List_설정, clBlack2, d_쓰기);
          _GList_배경색_(gui->항목줄.List_설정, _GColor_밝기_(clGray, 150), d_쓰기);
          _GList_테두리색_(gui->항목줄.List_설정, clBlack2, d_쓰기);

          //[이벤트]
          //{
              //[항목선택] 의 경우 발생.
              _GList_이벤트_Select_(gui->항목줄.List_설정, true, d_쓰기);

          //}

      //}

  //}

  //[제어기 상태]
  //{
      //[2012.07.30.월][추가!!!]

      //[Btn_제어기상태읽기]
      //{
          _GButton_생성_(gui->항목줄.Btn_제어기상태읽기, gui->기본틀.GVmos, GID_생성(),
                        _GLabel_X_(gui->항목줄.Lb_설정, 0, d_읽기) + _GLabel_폭_(gui->항목줄.Lb_설정, 0, d_읽기) + 4,
                        4,
                        140,
                        17,
                        true);
          _GButton_제목_(gui->항목줄.Btn_제어기상태읽기, "현재 제어기 상태 읽기", d_쓰기);
          //_GButton_테두리색_(gui->항목줄.Btn_제어기상태읽기, clBlack2, d_쓰기);
          _GButton_제목자동위치_(gui->항목줄.Btn_제어기상태읽기, false, d_쓰기);
          _GButton_제목위치X_(gui->항목줄.Btn_제어기상태읽기, (_GButton_폭_(gui->항목줄.Btn_제어기상태읽기, NULL, d_읽기)/2 - (12*9 + 8*3)/2), d_쓰기);
          _GButton_제목위치Y_(gui->항목줄.Btn_제어기상태읽기, 3, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->항목줄.Btn_제어기상태읽기, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->항목줄.Btn_제어기상태읽기,
               "[제어기] 의 현재 동작 상태를 읽어들여 해당 [그림부품] 에 반영합니다.\r\n"
               "이는 [제어기] 안 EEprom 의 설정내용이 아니라 현재 동작 값입니다.",
               d_쓰기);

              _GButton_풍선도움말_(gui->항목줄.Btn_제어기상태읽기, false, d_쓰기);

          //}

      //}

  //}


  //[도움말]
  //{
      //[2012.08.15.수][추가!!!]

      //[그림 경로 얻기]
      //{
          //실행중인 맷돌통합개발환경 경로 얻기.
          _Ide_실행경로_(그림경로);

          //그림경로 합성.
          _Str_더하기_(그림경로, "sysbmp\\control\\");

      //}

      //[BmpBtn_도움말]
      //{
          _GBmpButton_생성_(gui->항목줄.BmpBtn_도움말, gui->기본틀.GVmos, GID_생성(),
                           _GButton_X_(gui->항목줄.Btn_제어기상태읽기, 0, d_읽기) + _GButton_폭_(gui->항목줄.Btn_제어기상태읽기, 0, d_읽기) + 10,
                           4,
                           12,
                           17,
                           true);

          _GBmpButton_테두리_(gui->항목줄.BmpBtn_도움말, false, d_쓰기);

          //[그림 올리기]
          //{
              //올릴 그림 경로이름확장자 합성.
              _Str_합치기_(그림경로이름확장자, 그림경로, "trigger_down.bmp");

              _GBmpButton_그림지정_(gui->항목줄.BmpBtn_도움말, 그림경로이름확장자);
              _GBmpButton_그림위치X_(gui->항목줄.BmpBtn_도움말, 0, d_쓰기);
              _GBmpButton_그림위치Y_(gui->항목줄.BmpBtn_도움말, 2, d_쓰기);

          //}

          //[이벤트]
          //{
              _GBmpButton_이벤트_MClick_(gui->항목줄.BmpBtn_도움말, true, d_쓰기);

          //}

      //}

      //[Lb_도움말]
      //{
          _GLabel_생성_(gui->항목줄.Lb_도움말, gui->기본틀.GVmos, GID_생성(),
                       _GBmpButton_X_(gui->항목줄.BmpBtn_도움말, 0, d_읽기) + _GBmpButton_폭_(gui->항목줄.BmpBtn_도움말, 0, d_읽기),
                       5,
                       50,
                       17,
                       true);
          _GLabel_제목_(gui->항목줄.Lb_도움말, "도움말", d_쓰기);
          _GLabel_자동폭_(gui->항목줄.Lb_도움말, true, d_쓰기);
          _GLabel_문자색_(gui->항목줄.Lb_도움말, clGray, d_쓰기);

      //}

      //[List_도움말]
      //{
          _GList_생성_(gui->항목줄.List_도움말, NULL, GID_생성(),
                      _GButton_X_(gui->항목줄.BmpBtn_도움말, 0, d_읽기),
                      _GButton_Y_(gui->항목줄.BmpBtn_도움말, 0, d_읽기) + _GButton_높이_(gui->항목줄.BmpBtn_도움말, 0, d_읽기) - 1,
                      _GButton_폭_(gui->항목줄.BmpBtn_도움말, 0, d_읽기),
                      100,
                      false);

          _GList_전체항목_(gui->항목줄.List_도움말,
                         "설명문서\r\n"
                         "도움말\r\n"
                         "----------------\r\n"
                         "G.M.RC.BASiC.BD\r\n"
                         "G.M.RC.BASiC.MD\r\n"
                         "G.M.RC.BASiC\r\n"
                         "----------------\r\n"
                         "기계닉스 첨단 대장간\r\n"
                         "제작정보",
                         d_쓰기);

          _GList_메뉴사용_(gui->항목줄.List_도움말, true, d_쓰기);
          _GList_자동폭_(gui->항목줄.List_도움말, true, d_쓰기);
          _GList_자동높이_(gui->항목줄.List_도움말, true, d_쓰기);
          _GList_영점X_(gui->항목줄.List_도움말, 4, d_쓰기);
          //_GList_영점Y_(gui->항목줄.List_도움말, 2, d_쓰기);

          _GList_임시선택문자색_(gui->항목줄.List_도움말, clWhite, d_쓰기);
          _GList_임시선택배경색_(gui->항목줄.List_도움말, clBlack2, d_쓰기);
          _GList_배경색_(gui->항목줄.List_도움말, _GColor_밝기_(clGray, 150), d_쓰기);
          _GList_테두리색_(gui->항목줄.List_도움말, clBlack2, d_쓰기);

          //[이벤트]
          //{
              //[항목선택] 의 경우 발생.
              _GList_이벤트_Select_(gui->항목줄.List_도움말, true, d_쓰기);

          //}

      //}

  //}


  //[통신포트]
  //{
      //[2012.07.16.월][수정!!!]{---------------------------------------
      //가장 처음에 [편집기] 관련이 배치 되므로 [통신포트] 는 [풍선도움말] 앞에 배치.
      //}--------------------------------------------------------------

      //[Lb_통신포트번호]
      //{
          _GLabel_생성_(gui->항목줄.Lb_통신포트번호, gui->기본틀.GVmos, GID_생성(),
                       _GVmos_폭_(gui->기본틀.GVmos, 0, d_읽기) - 280,
                       5,
                       100, 17,
                       true);
          _GLabel_제목_(gui->항목줄.Lb_통신포트번호, "통신포트 번호:", d_쓰기);
          _GLabel_자동폭_(gui->항목줄.Lb_통신포트번호, true, d_쓰기);
          _GLabel_문자색_(gui->항목줄.Lb_통신포트번호, clGray, d_쓰기);

      //}

      //[Btn_통신포트번호]
      //{
          //[현재 설정값 변환]
          //{
              //현재 환경변수에 설정된 값을 표시하기 위하여 문자열로 변환한다.
              _Conv_Long값_문자열_(gv->통신포트번호, 0, false, false, 문자열);

          //}

          _GButton_생성_(gui->항목줄.Btn_통신포트번호, gui->기본틀.GVmos, GID_생성(),
                        _GLabel_X_(gui->항목줄.Lb_통신포트번호, 0, d_읽기) + _GLabel_폭_(gui->항목줄.Lb_통신포트번호, 0, d_읽기), 4,
                        30, 17,
                        true);
          _GButton_제목_(gui->항목줄.Btn_통신포트번호, 문자열, d_쓰기);

          _GButton_제목자동위치_(gui->항목줄.Btn_통신포트번호, false, d_쓰기);
          _GButton_제목위치X_(gui->항목줄.Btn_통신포트번호, (30/2 - (12*(_Str_길이얻기_(문자열)))/2) + 4, d_쓰기);
          _GButton_제목위치Y_(gui->항목줄.Btn_통신포트번호, 3, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->항목줄.Btn_통신포트번호, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->항목줄.Btn_통신포트번호,
               "제어기와 통신할 직렬통신 포트번호 선택.",
               d_쓰기);

              _GButton_풍선도움말_(gui->항목줄.Btn_통신포트번호, false, d_쓰기);

          //}

      //}

      //[Btn_통신포트열기/닫기]
      //{
          _GButton_생성_(gui->항목줄.Btn_통신포트열기닫기, gui->기본틀.GVmos, GID_생성(),
                        _GButton_X_(gui->항목줄.Btn_통신포트번호, 0, d_읽기) + _GButton_폭_(gui->항목줄.Btn_통신포트번호, 0, d_읽기) + 2, 4,
                        60, 17, true);
          _GButton_제목_(gui->항목줄.Btn_통신포트열기닫기, "열기", d_쓰기);

          _GButton_제목자동위치_(gui->항목줄.Btn_통신포트열기닫기, false, d_쓰기);
          _GButton_제목위치X_(gui->항목줄.Btn_통신포트열기닫기, (60/2 - (12*2)/2), d_쓰기);
          _GButton_제목위치Y_(gui->항목줄.Btn_통신포트열기닫기, 3, d_쓰기);

          //[이벤트]
          //{
              _GButton_이벤트_MClick_(gui->항목줄.Btn_통신포트열기닫기, true, d_쓰기);

          //}

          //[풍선도움말]
          //{
              _GButton_풍선도움말문자열_
              (gui->항목줄.Btn_통신포트열기닫기,
               "지정 통신포트 열거나 닫기.",
               d_쓰기);

              _GButton_풍선도움말_(gui->항목줄.Btn_통신포트열기닫기, false, d_쓰기);

          //}

      //}

  //}

  //[풍선도움말]
  //{
      //[Chk_풍선도움말]
      //{
          _GCheckButton_생성_(gui->항목줄.Chk_풍선도움말, gui->기본틀.GVmos, GID_생성(),
                             d_환경_GVmos_폭 - 86,
                             _GButton_Y_(gui->항목줄.Btn_통신포트열기닫기, 0, d_읽기) + 3,
                             true);
          _GCheckButton_확인_(gui->항목줄.Chk_풍선도움말, false, d_쓰기);

          //[이벤트]
          //{
              _GCheckButton_이벤트_MClick_(gui->항목줄.Chk_풍선도움말, true, d_쓰기);

          //}

      //}

      //[Lb_풍선도움말]
      //{
          _GLabel_생성_(gui->항목줄.Lb_풍선도움말, gui->기본틀.GVmos, GID_생성(),
                       _GCheckButton_X_(gui->항목줄.Chk_풍선도움말, 0, d_읽기) + 12,
                       _GCheckButton_Y_(gui->항목줄.Chk_풍선도움말, 0, d_읽기) - 1,
                       100, 17,
                       true);
          _GLabel_제목_(gui->항목줄.Lb_풍선도움말, "풍선도움말", d_쓰기);
          _GLabel_자동폭_(gui->항목줄.Lb_풍선도움말, true, d_쓰기);
          _GLabel_문자색_(gui->항목줄.Lb_풍선도움말, clGray, d_쓰기);

      //}

  //}

}

void GUI_소멸자_항목줄(void)
{
  //[2012.07.08.일][생성!!!]{--
  //항목줄 내부 그림부품 삭제.
  //}-------------------------

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}----------------

  //[풍선 도움말]
  //{
      _GLabel_삭제_(gui->항목줄.Lb_풍선도움말);
      _GCheckButton_삭제_(gui->항목줄.Chk_풍선도움말);

  //}

  //[통신포트]
  //{
      _GButton_삭제_(gui->항목줄.Btn_통신포트열기닫기);
      _GButton_삭제_(gui->항목줄.Btn_통신포트번호);
      _GLabel_삭제_(gui->항목줄.Lb_통신포트번호);

  //}

  //[도움말]
  //{
      //[2012.08.15.수][추가!!!]
      _GList_삭제_(gui->항목줄.List_도움말);
      _GLabel_삭제_(gui->항목줄.Lb_도움말);
      _GBmpButton_삭제_(gui->항목줄.BmpBtn_도움말);

  //}

  //[제어기 상태]
  //{
      //[2012.07.30.월][완료!!!]
      _GButton_삭제_(gui->항목줄.Btn_제어기상태읽기);

  //}

  //[설정]
  //{
      _GList_삭제_(gui->항목줄.List_설정);
      _GLabel_삭제_(gui->항목줄.Lb_설정);
      _GBmpButton_삭제_(gui->항목줄.BmpBtn_설정);

  //}

  //[편집기]
  //{
      //[2012.07.21.토][추가!!!]{------------------
      _GCheckButton_삭제_(gui->항목줄.Chk_편집기결합);
      //}-----------------------------------------

      _GButton_삭제_(gui->항목줄.Btn_편집기결합);
      _GButton_삭제_(gui->항목줄.Btn_편집기보이기);
      _GLabel_삭제_(gui->항목줄.Lb_편집기);

  //}

}

bool GUI_동작함수_항목줄(struct GUI알림문64  *pGUI알림문64)
{
  //[2012.07.15.일][생성!!!]{---------
  //해당 [알림문] 만 처리.
  //처리한 알림문이 있다면 <true> 를 반환.
  //}--------------------------------

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  if     (pGUI알림문64->식별자 == GID_읽기(gui->항목줄.Btn_통신포트번호))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 항목줄_Btn_통신포트번호_이벤트_MClick(); return(true); }

  }
  else if(pGUI알림문64->식별자 == GID_읽기(gui->항목줄.Btn_통신포트열기닫기))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 항목줄_Btn_통신포트열기닫기_이벤트_MClick(); return(true); }

  }
  else if(pGUI알림문64->식별자 == GID_읽기(gui->항목줄.Chk_풍선도움말))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 항목줄_Chk_풍선도움말_이벤트_MClick(); return(true); }

  }

  //[2012.07.16.월][추가!!!]
  else if(pGUI알림문64->식별자 == GID_읽기(gui->항목줄.BmpBtn_설정))
  {
    if     (pGUI알림문64->알림문 == d_GuiMsg_MClick) { 항목줄_BmpBtn_설정_이벤트_MClick(); return(true); }

  }
  else if(pGUI알림문64->식별자 == GID_읽기(gui->항목줄.List_설정))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_Select) { 항목줄_List_설정_이벤트_Select(); return(true); }

  }

  //[2012.07.17.화][추가!!!]
  else if(pGUI알림문64->식별자 == GID_읽기(gui->항목줄.Btn_편집기보이기))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 항목줄_Btn_편집기보이기_이벤트_MClick(); return(true); }

  }
  else if(pGUI알림문64->식별자 == GID_읽기(gui->항목줄.Btn_편집기결합))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 항목줄_Btn_편집기결합_이벤트_MClick(); return(true); }

  }
  //[2012.07.22.일][추가!!!]
  else if(pGUI알림문64->식별자 == GID_읽기(gui->항목줄.Chk_편집기결합))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 항목줄_Chk_편집기결합_이벤트_MClick(); return(true); }

  }

  //[2012.07.30.월][추가!!!]
  else if(pGUI알림문64->식별자 == GID_읽기(gui->항목줄.Btn_제어기상태읽기))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 항목줄_Btn_제어기상태읽기_이벤트_MClick(); return(true); }

  }


  //[2012.08.15.수][추가!!!]
  else if(pGUI알림문64->식별자 == GID_읽기(gui->항목줄.BmpBtn_도움말))
  {
    if     (pGUI알림문64->알림문 == d_GuiMsg_MClick) { 항목줄_BmpBtn_도움말_이벤트_MClick(); return(true); }

  }
  else if(pGUI알림문64->식별자 == GID_읽기(gui->항목줄.List_도움말))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_Select) { 항목줄_List_도움말_이벤트_Select(); return(true); }

  }


  //여기까지 온것은 처리하지 않은 것으로 보고.
  return(false);

}

void 항목줄_Btn_통신포트번호_이벤트_MClick(void)
{
  //[2011.09.25.일][생성!!!]{---
  //[2011.10.22.토][수정!!!]
  //사용할 PC 의 통신포트 번호 설정.
  //}--------------------------

  //[VAR]
  //{
      char  문자열[512];
      bool  확인취소;

  //}

  //[GUI/전역변수]{------
  struct 전역정보  *gv;
  struct GUI     *gui;
  전역정보_위치얻기(&gv);
  GUI_위치얻기(&gui);
  //}------------------

  //[대화상자 보이기]
  //{
      //대화상자 이외의 것은 동작되지 않도록 한다.
      Ide_활성(false);
      //{
          //[현재 설정값 출력]
          //{
              //버튼 제목이 현재 선택된 통신포트 번호다.
              _GButton_제목_(gui->항목줄.Btn_통신포트번호, 문자열, d_읽기);

              //대화상자의 [한줄 편집기] 에 출력.
              _GMsgBox_한줄편집기문자열_(gui->공용알림창, 문자열, d_쓰기);

          //}

          확인취소 = _GMsgBox_한줄편집기_
                   (gui->공용알림창, d_기계닉스,
                    "사용할 통신포트 번호를 10진수로 입력합니다."
                   );

      //}
      Ide_활성(true);

  //}

  //[확인/취소]
  //{
      //[취소] 인 경우는 처리하지 않고 바로 종료.
      if(확인취소 == false) return;

  //}

  //[문자열 검사]
  //{
      //[한줄편집기] 의 문자열 얻기.
      _GMsgBox_한줄편집기문자열_(gui->공용알림창, 문자열, d_읽기);

      if(_Check_10진수규칙_(문자열) != true)
      {
        Ide_알림(d_오류,
                "10진수 문자열이 아닙니다.\r\n"
                "0 - 9 의 숫자로 이루어진 10진수 문자열만 사용가능하며\r\n"
                "앞뒤에 공백이 없어야 합니다."
               );

        //더이상 처리하지 않고 종료한다.
        return;

      }

  //}

  //[통신포트 번호 얻기]
  //{
      //10진수 문자열을 값으로 변환후 환경변수에 저장.
      gv->통신포트번호 = _Conv_10진수표기_Int값_(문자열);

  //}

  //[버튼 문자열 정리]
  //{
      //[!]{--------------------
      //현재 선택된 통신포트번호 표기.
      //}-----------------------

      _Conv_Long값_문자열_(gv->통신포트번호, 0, false, false, 문자열);

      _GButton_제목_(gui->항목줄.Btn_통신포트번호, 문자열, d_쓰기);
      _GButton_제목위치X_(gui->항목줄.Btn_통신포트번호, (30/2 - (12*(_Str_길이얻기_(문자열)))/2 + 4), d_쓰기);

  //}

}

void 항목줄_Btn_통신포트열기닫기_이벤트_MClick(void)
{
  //[2011.09.25.일][생성!!!]{---------------------------
  //[2012.07.26.목][수정!!!]
  //환경변수에 지정돼 있는 통신포트를 [열기/닫기] 한다.
  //[G.M.RC.BASiC] 용이므로 [통신율:38400 BPS] 로 고정 설정.
  //
  //<열기> : 통신포트 열고 [닫기] 로 버튼 문자열 전환.
  //<닫기> : 통신포트 닫고 [열기] 로 버튼 문자열 전환.
  //}--------------------------------------------------

  //[VAR]
  //{
      char  문자열[512];

  //}

  //[GUI/전역변수]{------
  struct 전역정보  *gv;
  struct GUI     *gui;
  전역정보_위치얻기(&gv);
  GUI_위치얻기(&gui);
  //}------------------

  //[버튼 문자열에 따른 처리]
  //{
      //버튼 문자열 얻기.
      _GButton_제목_(gui->항목줄.Btn_통신포트열기닫기, 문자열, d_읽기);

      if(_Str_일치확인_(문자열, "열기", false) == true)
      {
        //[!]{----------------------------
        //통신포트 열고 버튼 제목 [닫기] 로 교체.
        //}-------------------------------

        //통신포트 열기.
        //[G.M.RC.BASiC:38400BPS 고정]------v
        if(_Ide_통신포트_열기_(gv->통신포트번호, 38400) != true)
        {
          Ide_알림(d_오류, "통신포트를 열수 없습니다.");

          //더이상 처리하지 않고 종료.
          return;

        }

        //[버튼 제목 전환]
        //{
            _GButton_제목_(gui->항목줄.Btn_통신포트열기닫기, "닫기", d_쓰기);
            _GButton_배경색_(gui->항목줄.Btn_통신포트열기닫기, clGray/*0x2824bf*//*_GColor_밝기_(clRed, 0)*/, d_쓰기);
            _GButton_문자색_(gui->항목줄.Btn_통신포트열기닫기, clWhite, d_쓰기);
            _GButton_테두리색_(gui->항목줄.Btn_통신포트열기닫기, clBlack2, d_쓰기);

        //}

      }
      else
      {
        //[!]{----------------------------
        //통신포트 닫고 버튼 제목 [열기] 로 교체.
        //}-------------------------------

        //통신포트 닫기.
        if(_Ide_통신포트_닫기_() != true)
        {
          Ide_알림(d_오류, "통신포트를 닫을수 없습니다.");

          //더이상 처리하지 않고 종료.
          return;

        }

        //[버튼 전환]
        //{
            _GButton_제목_(gui->항목줄.Btn_통신포트열기닫기, "열기", d_쓰기);
            _GButton_배경색_(gui->항목줄.Btn_통신포트열기닫기, clWhite, d_쓰기);
            _GButton_문자색_(gui->항목줄.Btn_통신포트열기닫기, clBlack2, d_쓰기);
            _GButton_테두리색_(gui->항목줄.Btn_통신포트열기닫기, clGray, d_쓰기);

        //}

      }

  //}

}

void 항목줄_BmpBtn_설정_이벤트_MClick(void)
{
  //[2012.07.15.일][생성!!!]{------------------------
  //[설정항목] 이 보이지 않는다면 보이고, 보이고 있다면 감춘다.
  //}-----------------------------------------------

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  if(_GList_보이기_(gui->항목줄.List_설정, NULL, d_읽기) == true)
  {
    //이미 보이고 있다면 감추기.
    _GList_보이기_(gui->항목줄.List_설정, false, d_쓰기);

  }
  else
  {
    //안보인다면 <BmpBtn_설정> 아래에 보이기.
    _GList_그림부품안메뉴보이기_(gui->항목줄.List_설정,
                            gui->기본틀.GVmos,
                            _GBmpButton_X_(gui->항목줄.BmpBtn_설정, 0, d_읽기),
                            _GBmpButton_Y_(gui->항목줄.BmpBtn_설정, 0, d_읽기) + _GBmpButton_높이_(gui->항목줄.BmpBtn_설정, 0, d_읽기) - 1);

  }

}

void 항목줄_List_설정_이벤트_Select(void)
{
  //[2012.07.16.월][생성!!!]{-------
  //[설정항목] 선택에 해당하는 처리 수행.
  //}------------------------------

  //[VAR]
  //{
      char  항목[128];

      char  문자열[512];
      bool  확인취소;

      int   검증시간;

  //}

  //[GUI/전역변수]{------
  struct 전역정보  *gv;
  struct GUI     *gui;
  전역정보_위치얻기(&gv);
  GUI_위치얻기(&gui);
  //}------------------

  //[항목 문자열 얻기]
  //{
      _GList_항목얻기_(gui->항목줄.List_설정,
                     _GList_항목선택_(gui->항목줄.List_설정, NULL, d_읽기),
                     항목);

  //}

  //[항목 구분 처리]
  //{
      if     (_Str_일치확인_(항목, "현재 상태를 제어기 시작 상태로 고정", false) == true)
      {
        //[확인 알림문]
        //{
            //[!]{--------------------
            //중요한 기능이므로 한번더 확인.
            //}-----------------------

            Ide_알림(d_기계닉스,
                    "현재 [제어기] 의 \"각도/속도\" 를 시작 \"각도/속도\" 로 설정합니다.\r\n"
                    "실행 하려면 \"확인\" 을 누르십시요.\r\n"
                   );

        //}

        //[명령 처리]
        //{
            if(항목줄_통신포트열림확인() == true)
            {
              if(_GMRCBASIC_Save(기본조정설정_제어기번호()) != true) { Ide_통신오류알림(); return; }

            }

        //}

      }
      else if(_Str_일치확인_(항목, "제어기 초기화", false) == true)
      {
        //[확인 알림문]
        //{
            //[!]{--------------------
            //중요한 기능이므로 한번더 확인.
            //}-----------------------

            Ide_알림(d_기계닉스,
                    "[제어기] 안의 사용자 설정 내용을 무시하고 완전히 초기화 합니다.\r\n"
                    "[제어기] 는 기본 초기 설정으로 재설정 될 것입니다.\r\n"
                    "초기화 된 설정은 [제어기] 를 다시 시작하면 반영됩니다.\r\n\r\n"
                    "초기화 하려면 \"확인\" 을 누르십시요.\r\n"
                   );

        //}

        //[명령 처리]
        //{
            if(항목줄_통신포트열림확인() == true)
            {
              if(_GMRCBASIC_EEpromInit(기본조정설정_제어기번호()) != true) { Ide_통신오류알림(); return; }

            }

        //}

      }
      else if(_Str_일치확인_(항목, "검증시간(ms) 설정", false) == true)
      {
        //[2012.08.09.목][추가!!!]

        //[대화상자 보이기]
        //{
            //대화상자 이외의 것은 동작되지 않도록 한다.
            Ide_활성(false);
            //{
                //[현재 설정값 출력]
                //{
                    _Conv_Long값_문자열_(gv->ivm검증시간, 0, false, false, 문자열);

                    //대화상자의 [한줄 편집기] 에 출력.
                    _GMsgBox_한줄편집기문자열_(gui->공용알림창, 문자열, d_쓰기);

                //}

                확인취소 = _GMsgBox_한줄편집기_
                         (gui->공용알림창, d_기계닉스,
                          "[검증 시간 간격] 을 밀리초(ms:1/1000초) 단위 [10진수] 로 입력합니다.\r\n"
                          "0 - 4000(ms) 까지 사용할수 있습니다."
                         );

            //}
            Ide_활성(true);

        //}

        //[확인/취소]
        //{
            //[취소] 인 경우는 처리하지 않고 바로 종료.
            if(확인취소 == false) return;

        //}

        //[문자열 검사]
        //{
            //[한줄편집기] 의 문자열 얻기.
            _GMsgBox_한줄편집기문자열_(gui->공용알림창, 문자열, d_읽기);

            if(_Check_10진수규칙_(문자열) != true)
            {
              Ide_알림(d_오류,
                      "10진수 문자열이 아닙니다.\r\n"
                      "0 - 9 의 숫자로 이루어진 10진수 문자열만 사용가능하며\r\n"
                      "앞뒤에 공백이 없어야 합니다."
                     );

              //더이상 처리하지 않고 종료한다.
              return;

            }

        //}

        //[통신포트 번호 얻기]
        //{
            //10진수 문자열을 값으로 변환후 환경변수에 저장.
            검증시간 = _Conv_10진수표기_Int값_(문자열);

        //}

        //[범위 검사]
        //{
            if((0 <= 검증시간) && (검증시간 <= 4000))
            {
              //[확정]
              //{
                  gv->ivm검증시간 = 검증시간;

              //}

            }
            else
            {
              Ide_알림(d_오류,
                      "0 - 4000(ms) 범위만 사용할수 있습니다."
                     );

            }

        //}

      }

  //}

}

void 항목줄_Btn_편집기보이기_이벤트_MClick(void)
{
  //[2012.07.17.화][생성!!!]{--
  //[편집기] 를 보여준다.
  //위치/크기는 현재 상태 그대로.
  //}-------------------------

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[붙이기]
  //{
      //[!]{------------------------------------------------------
      //[편집기] 를 보이는 과정이므로 안보일때 먼저 [붙이기] 처리를 하고 보인다.
      //}---------------------------------------------------------

      if(_GCheckButton_확인_(gui->항목줄.Chk_편집기결합, NULL, d_읽기) == true)
      {
        //[붙이기]
        //{
            _GForm_X_(gui->편집기.Form_기본틀,
                      _GVmos_X_(gui->기본틀.GVmos, 0, d_읽기),
                      d_쓰기);

            _GForm_Y_(gui->편집기.Form_기본틀,
                      _GVmos_Y_(gui->기본틀.GVmos, 0, d_읽기) + _GVmos_높이_(gui->기본틀.GVmos, 0, d_읽기) - 1,
                      d_쓰기);

        //}

      }

  //}

  _GForm_보이기_(gui->편집기.Form_기본틀, true, d_쓰기);

}

void 항목줄_Btn_편집기결합_이벤트_MClick(void)
{
  //[2012.07.17.화][생성!!!]{----------------------------
  //1) [편집기] 를 현재 크기 그대로 현재 [제어판] 아래에 붙여준다.
  //2) [제어판] 위치는 변화가 없다.
  //
  //단, 안보인다면 위치 확정후 보여준다.
  //}---------------------------------------------------

  //[VAR]
  //{
      int  화면폭;
      int  화면높이;

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[붙이기]
  //{
      _GForm_X_(gui->편집기.Form_기본틀,
                _GVmos_X_(gui->기본틀.GVmos, 0, d_읽기),
                d_쓰기);

      _GForm_Y_(gui->편집기.Form_기본틀,
                _GVmos_Y_(gui->기본틀.GVmos, 0, d_읽기) + _GVmos_높이_(gui->기본틀.GVmos, 0, d_읽기) - 1,
                d_쓰기);

  //}

  //[폭/높이 재계산]
  //{
      //[!]{-------------------------------------------------
      //[편집기] 가 붙여지는 경우 [오른쪽/아래] 가 화면에서 벗어나는 경우
      //자동으로 화면안에 모두 보이도록 크기를 재조정 한다.
      //}----------------------------------------------------

      //[화면 크기 얻기]
      //{
          화면폭  = _Sys_화면영역폭_();
          화면높이 = _Sys_화면영역높이_();

      //}

      if((화면폭 - _GForm_X_(gui->편집기.Form_기본틀, 0, d_읽기)) < _GForm_폭_(gui->편집기.Form_기본틀, 0, d_읽기))
      {
        _GForm_폭_(gui->편집기.Form_기본틀, (화면폭 - _GForm_X_(gui->편집기.Form_기본틀, 0, d_읽기)), d_쓰기);

      }

      if((화면높이 - _GForm_Y_(gui->편집기.Form_기본틀, 0, d_읽기)) < _GForm_높이_(gui->편집기.Form_기본틀, 0, d_읽기))
      {
        _GForm_높이_(gui->편집기.Form_기본틀, (화면높이 - _GForm_Y_(gui->편집기.Form_기본틀, 0, d_읽기) + 1), d_쓰기);

      }

  //}

  //순간적으로 위치가 이동하는 것이 보이지 않도록 마지막에 보여준다.
  _GForm_보이기_(gui->편집기.Form_기본틀, true, d_쓰기);

}

void 항목줄_Chk_편집기결합_이벤트_MClick(void)
{
  //[2012.07.22.일][생성!!!]{--------
  //[편집기] 를 [제어판] 에 즉시 붙여준다.
  //}-------------------------------

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[붙이기]
  //{
      //[2012.07.22.일][추가!!!]{---
      //[편집기] 가 보이는 경우만 처리.
      //}--------------------------

      if((_GCheckButton_확인_(gui->항목줄.Chk_편집기결합, NULL, d_읽기) == true) &&
         (_GForm_보이기_(gui->편집기.Form_기본틀, NULL, d_읽기) == true))
      {
        _GForm_X_(gui->편집기.Form_기본틀,
                  _GVmos_X_(gui->기본틀.GVmos, 0, d_읽기),
                  d_쓰기);

        _GForm_Y_(gui->편집기.Form_기본틀,
                  _GVmos_Y_(gui->기본틀.GVmos, 0, d_읽기) + _GVmos_높이_(gui->기본틀.GVmos, 0, d_읽기) - 1,
                  d_쓰기);

      }

  //}

}

void 항목줄_Btn_제어기상태읽기_이벤트_MClick(void)
{
  //[2012.07.30.월][생성!!!]{-------------------------------
  //현재 제어기 상태를 읽어서 IDE 에 설정.
  //단, EEprom 안의 [설정] 정보가 아니라 현재 구동하고 있는 상태정보.
  //}------------------------------------------------------

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[통신포트 열림 확인]
  //{
      //[2012.07.29.일][추가!!!]{--------------------------------
      //모든 기능이 [통신포트:열림] 에서만 처리 가능하므로 여기서 일괄 검사후
      //[닫혀] 있다면 아무것도 처리하지 않는다.
      //}-------------------------------------------------------

      if(항목줄_통신포트열림확인() != true) return;

  //}

  //[이벤트:무효화]{-------------------------------------------------
  _GButton_이벤트_MClick_(gui->항목줄.Btn_제어기상태읽기, false, d_쓰기);
  //}-------------------------------------------------------------

  Ide_제어기_현재상태_읽어_IDE에_반영();

  lb끝:

  //[이벤트:유효화]{------------------------------------------------
  _GButton_이벤트_MClick_(gui->항목줄.Btn_제어기상태읽기, true, d_쓰기);
  //}------------------------------------------------------------

}


void 항목줄_BmpBtn_도움말_이벤트_MClick(void)
{
  //[2012.08.15.수][생성!!!]{--------------------------
  //[도움말항목] 이 보이지 않는다면 보이고, 보이고 있다면 감춘다.
  //}-------------------------------------------------

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  if(_GList_보이기_(gui->항목줄.List_도움말, NULL, d_읽기) == true)
  {
    //이미 보이고 있다면 감추기.
    _GList_보이기_(gui->항목줄.List_도움말, false, d_쓰기);

  }
  else
  {
    //안보인다면 <BmpBtn_도움말> 아래에 보이기.
    _GList_그림부품안메뉴보이기_(gui->항목줄.List_도움말,
                            gui->기본틀.GVmos,
                            _GBmpButton_X_(gui->항목줄.BmpBtn_도움말, 0, d_읽기),
                            _GBmpButton_Y_(gui->항목줄.BmpBtn_도움말, 0, d_읽기) + _GBmpButton_높이_(gui->항목줄.BmpBtn_도움말, 0, d_읽기) - 1);

  }

}

void 항목줄_List_도움말_이벤트_Select(void)
{
  //[2012.08.15.수][생성!!!]{--------
  //[도움말항목] 선택에 해당하는 처리 수행.
  //}-------------------------------

  //[VAR]
  //{
      char   항목[128];

      char   경로이름확장자[1024*2];

      //<경로이름확장자> 저장소를 다른이름으로 사용하기 위한것.
      char  *제작정보;

  //}

  //[GUI/전역변수]{------
  struct 전역정보  *gv;
  struct GUI     *gui;
  전역정보_위치얻기(&gv);
  GUI_위치얻기(&gui);
  //}------------------

  //[초기화]
  //{
      제작정보 = 경로이름확장자;

  //}

  //[항목 문자열 얻기]
  //{
      _GList_항목얻기_(gui->항목줄.List_도움말,
                     _GList_항목선택_(gui->항목줄.List_도움말, NULL, d_읽기),
                     항목);

  //}

  //[항목 구분 처리]
  //{
      if     (_Str_일치확인_(항목, "설명문서", false) == true)
      {
        //[!]{--------------------------------------------
        //[폴더:기계닉스] 안의 "설명문서.gtxt" 를 [편집기] 에 열기.
        //}-----------------------------------------------

        //[합성]
        //{
            _Str_합치기_(경로이름확장자, gv->기준경로, "기계닉스\\설명문서.gtxt");

        //}

        //[편집기:보이기]
        //{
            //[편집기] 를 먼저 보이고 [설명문서] 를 열어준다.
            항목줄_Btn_편집기보이기_이벤트_MClick();

        //}

        //[편집기에 문서 열기]
        //{
            _GEditor_문서열기_(gui->편집기.Edtr_편집기, 경로이름확장자);

            //[문서종류] 는 <*.gtxt> 자체로 내부 인식되므로 별도 설정하지 않는다.

        //}

      }


      else if(_Str_일치확인_(항목, "도움말", false) == true)
      {
        //[2012.08.21.화][추가!!!]
        _Sys_외부실행_("http://www.gigyenics.co.kr/controller/g.m.rc.basic/ide/ide.html");

      }
      else if(_Str_일치확인_(항목, "G.M.RC.BASiC.BD", false) == true)
      {
        //[2012.08.21.화][추가!!!]
        _Sys_외부실행_("http://www.gigyenics.co.kr/controller/g.m.rc.basic.bd/item.html");

      }
      else if(_Str_일치확인_(항목, "G.M.RC.BASiC.MD", false) == true)
      {
        //[2012.08.21.화][추가!!!]
        _Sys_외부실행_("http://www.gigyenics.co.kr/controller/g.m.rc.basic.md/item.html");

      }
      else if(_Str_일치확인_(항목, "G.M.RC.BASiC", false) == true)
      {
        //[2012.08.21.화][추가!!!]
        _Sys_외부실행_("http://www.gigyenics.co.kr/controller/g.m.rc.basic/item.html");

      }


      else if(_Str_일치확인_(항목, "기계닉스 첨단 대장간", false) == true)
      {
        //[2012.08.21.화][추가!!!]{----
        //기계닉스 [주소] 와 [편지] 보이기.
        //}---------------------------

        Ide_알림(d_기계닉스,
                " 기계닉스 첨단 대장간\r\n\r\n"
                " 주소 : http://www.gigyenics.co.kr\r\n"
                " 편지 : gigyein@gmail.com\r\n"
               );

      }
      else if(_Str_일치확인_(항목, "제작정보", false) == true)
      {
        //[!]{--------------------------------------------
        //[맷돌-통합개발환경] 에서와 유사한 [제작정보] 알림창 보이기.
        //}-----------------------------------------------

        _Str_할당_(제작정보, "");

        _Str_더하기_(제작정보, " 이름 : 김 갑철(金甲哲) \r\n");
        _Str_더하기_(제작정보, " 날짜 : "); _Str_더하기_(제작정보, d_제작날짜); _Str_더하기_(제작정보, " \r\n");
        _Str_더하기_(제작정보, " 도구 : 맷돌-통합개발환경(맷돌C언어/한국형C언어/한글C언어) \r\n");
        _Str_더하기_(제작정보, " 부품 : 기계닉스 자체개발 그림부품(맷돌C용) ");

        Ide_알림(d_기계닉스, 제작정보);

      }

  //}

}


void 항목줄_Chk_풍선도움말_이벤트_MClick(void)
{
  //[2011.09.25.일][생성!!!]

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  if(_GCheckButton_확인_(gui->항목줄.Chk_풍선도움말, 0, d_읽기) == true)
  {
    //[풍선도움말] 사용.

    항목줄_풍선도움말_사용유무(true);

    기본조정설정_풍선도움말_사용유무(true);

    영점조정설정_풍선도움말_사용유무(true);

    주기설정_풍선도움말_사용유무(true);

    제어기설정_풍선도움말_사용유무(true);

    제어기제어_풍선도움말_사용유무(true);

    프로그램_풍선도움말_사용유무(true);

    편집기_풍선도움말_사용유무(true);

  }
  else
  {
    //[풍선도움말] 미사용.

    항목줄_풍선도움말_사용유무(false);

    기본조정설정_풍선도움말_사용유무(false);

    영점조정설정_풍선도움말_사용유무(false);

    주기설정_풍선도움말_사용유무(false);

    제어기설정_풍선도움말_사용유무(false);

    제어기제어_풍선도움말_사용유무(false);

    프로그램_풍선도움말_사용유무(false);

    편집기_풍선도움말_사용유무(false);

  }

}

//----------------------------------------------------------------------------
//[함수]-----------------------------------------------------------------------
//----------------------------------------------------------------------------

void 항목줄_풍선도움말_사용유무(bool  p사용유무)
{
  //[2012.07.31.화][생성!!!]

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  _GButton_풍선도움말_(gui->항목줄.Btn_편집기보이기, p사용유무, d_쓰기);

  _GButton_풍선도움말_(gui->항목줄.Btn_편집기결합, p사용유무, d_쓰기);

  _GButton_풍선도움말_(gui->항목줄.Btn_제어기상태읽기, p사용유무, d_쓰기);

  _GButton_풍선도움말_(gui->항목줄.Btn_통신포트번호, p사용유무, d_쓰기);

  _GButton_풍선도움말_(gui->항목줄.Btn_통신포트열기닫기, p사용유무, d_쓰기);

}

unsigned char 항목줄_통신포트열림확인(void)
{
  //[2012.07.26.목][생성!!!]{--------------------------
  //[통신포트] 가 열려있는지 확인하고 열려있다면 <true> 를 반환.
  //}-------------------------------------------------

  //[VAR]
  //{
      char  제목[16];

  //}

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[통신포트 열림 확인]
  //{
      //[!]{----------------------------------------
      //버튼:"닫기" 인 경우는 현재 [통신포트] 가 열려있는 것.
      //}-------------------------------------------

      //버튼 문자열 얻기.
      _GButton_제목_(gui->항목줄.Btn_통신포트열기닫기, 제목, d_읽기);

      if(_Str_일치확인_(제목, "닫기", false) == true) return(true);
      else
      {
        //Ide_알림(d_오류,
        //        "[통신포트] 가 닫혀있습니다.\r\n"
        //        "먼저 [통신포트] 를 열어 주십시요.

        return(false);

      }

  //}

}



