레이블이 AddString()인 게시물을 표시합니다. 모든 게시물 표시
레이블이 AddString()인 게시물을 표시합니다. 모든 게시물 표시

2010년 2월 4일 목요일

MFC practice #7

Interconnection btw event of Listbox and behavior of Edit box.

 1.LBN_SELCHANGE통지 메세지: Listbox에서 항목 선택이 변경되었음을 알려주는 메세지 (p.439)
   - value category의 멤버변수 추가.
   - CxDlg class의 속성창의 event버튼 클릭.
   - LBN_SELCHANGE통지 메시지의 핸들러 함수(OnLbnSelchangex)등록.
 2.GetCurSel() 함수: 현재 선택된 항목의 index 알아냄.
    int nIndex;
nIndex=test.GetCurSel();
 3.switch/case이용하여 index값에 따라 임의의 string을 edit box에 출력.
   - value category로 m_edit1 멤버 변수를 edit box에 추가
   - edit box에서는 AddString(), InsertString()이 쓰이지 않음(?), so x.Format()으로 출력.
   - 다음과 같이 OnLbnSelchangeList1()의 case문 안에 코딩
        m_edit1.Format(_T("index 0"));
UpdateData(FALSE);

Result
 - Ok, it works.
 - Bug: OGF1,OGF2에 관계 없이 첫번째 명령어는 무조건 'index0'가 발생함.
        OGF를 구분하는 조건이 하나가 더 추가 되어야 함. How?

Summary
 - LBN_SELCHANGE(OnLbnSelchange()) 통지 메시지:
   .목록상자(ListBox)에서 항목 선택이 변경되었음을 알려줌.
   .키보드를 이용했든 마우스를 이용했든 항목 선택이 변경되면 이 메시지가 발생함.
 - GetCurSel():
   .List box내의 항목 선택했을시 항목의 index를 int형으로 반환하는 함수. (see p.440)
 - Edit box에서 화면 출력하고자 할때는 'AddStrig()'이나 'InsertString()'이 쓰이지 않고,
   'Format()' 함수 사용.

TODO next is
 - Debug: 전역 static으로 변수 하나 할당한 후 button click 마지막 란에 OGF구분용 flag 추가
          ex) OGF_flag=0
          OnLbnSelchange()함수 안에 위의 flag를 이용한 if문 구현하여 돌려보자.




MFC practice #6

How to connect a button with its relative List Box?

1. 다른 프로그램 예제 분석 결과:(로또 프로그램)
  -Button click시 edit box에 random 숫자 6개를 출력하는 방식.
    m_num1.Format("%d",Number[0]);
  -위 형식을 응용하여 try...
2. List Box에 우클릭'Add Variable'하여 m_CMD변수 추가(value category, CString type).
  m_CMD.Format(_T("AA"));
  -> 실행하여 button click시 원하는 결과 출력 안함.
  -> 둘의 차이는 edit box에 쓰느냐, list box에 쓰느냐의 차이라고 생각된다.
  -> 'Format()'이 아니라 다른것을 적용해야 할듯 함.. AddString??

Result
  - AddString() 이용하여 출력
    test.AddString(_T("Reset")); // control category로 Add variable, variable name is 'test'
  - but, AddString()은 버튼 클릭할때마다 Listbox에 문장이 추가되어 버리는 문제 발생
    -> test.ResetContent(); // 이 코드를 함수의 처음부분에 삽입하여 문제 해결..
  - OK. it works.
 
Summary
 - Category가 'value'이면 Format()을 사용하여 display하고
 - Category가 'Control'이면 AddString()을 사용하여 display.
 - edit box에는 Format()을 이용하여 display, List box에는 AddString()을 이용하여 display.
 - ListBox의 내용을 지우고 싶으면 ResetContent()이용

TODO next is
 - OGF button click시 해당 그룹의 OCF commands가 List box에 출력되는것 까지 현재 구현 완료.
 - mouse로 임의의 OCF 클릭시에
   // LBN_SELCHANGE 통지 메세지 이용(OnLbnSelchange()함수생성)
   // OnLbnSelchange()함수 내에, GetCurSel()함수 이용하여 클릭된 list의 index값을 int로 읽어옴.
 - 해당 HCI packet을 생성하고
 - 관련 내용을 오른쪽의 edit box에 출력(static type??)
 - 동시에 RS-232 모듈로 생성된 packet을 전달.
   
혹시 정리한 내용중 틀린게 있으면 누가 comment 좀 달아주세요 ㅎㅎ