2008-09-22 5 views
1

나는 이런 식으로 뭔가를하고 싶은 제어 이 같은?프레임 워크는

P. DDX가 낡아서 유연하지 않기 때문에 싫어합니다. getters와 setter를 사용할 수 없습니다.

답변

0

Cocoa Bindings은 원하는 것을 정확히 제공하지만 Mac/Objective-C 단어에서만 사용할 수 있습니다. GNUstep은 무료 버전이지만 C++가 아닌 Objective-C입니다.

그러나 자체 프레임 워크의 경우 좋은 영감을 주거나 향후 연구를 시작할 수있는 좋은 출발점이 될 수 있습니다.

+0

구현할 수 있다는 말을 듣는 것이 좋습니다. Google을 사용한 "연구"결과가 없습니다. 더 이상의 해답이 없다면 아마도 내 자신의 프레임 워크를 작성해야 할 것입니다. – cos

2

DDX 맵은 일련의 if 문에 불과하므로 쉽게 자신의 DDX 매크로를 작성할 수 있습니다.

#define DDX_MAP_VALIDATED_INT_EDITOR(control, variable, getter, setter, validator)\ 
    if(nCtlID==control.GetDlgCtrlID())\ 
    {\ 
     if(bSaveAndValidate)\ 
     {\ 
      int const value=control.GetDlgItemInt();\ 
      if(validator(value))\ 
      {\ 
       variable->setter(value);\ 
      }\ 
      else\ 
      {\ 
       return false;\ 
      }\ 
     }\ 
     else\ 
     {\ 
      control.SetDlgItemInt(variable->getter());\ 
     }\ 
    } 

이것은 테스트되지 않았지만 DDX 맵에 입력하면 예제에 따라 작동해야합니다. 그것은 당신에게 아이디어를 줄 것입니다. 물론이 함수를 표준 DDX 매크로가하는 함수로 추출 할 수 있습니다.이 함수는 바깥 쪽 if을 수행 한 다음 함수를 호출합니다. 이렇게하면 다양한 유형의 variable (예 : 포인터 대 참조/값)의 함수에 과부하가 걸릴 수 있습니다.

관련 문제