|
얼큰 님이 쓰신 글 :
: 안녕하세요?
: 얼큰이 이성현입니다.
:
: 우선 TShiftState() << ssCrtl
: 에서 TShiftState()를 하게 되면 어떤 값이 리턴 될것이구요.
: "<<" 이거는 쉬프트 연산자입니다. 검색해 보면 나올겁니다. 브트를 좌로 이동하는거져..
: ssCrtl만큼요..
TShiftState는
typedef Set<Classes__1, ssShift, ssDouble> TShiftState;
로 정의되어 있는 Set(집합) 타입입니다.
(ANSI C++ STL의 std::set과는 다릅니다. 대소문자 주의!)
Set 타입은 다음과 같이 정의된 템플릿 클래스입니다.
Set<type, minval, maxval>
여기서 type은 int, char, 또는 enum 타입이고,
minval의 최소값은 0, maxval의 최대값은 255입니다.
그러므로 Set은 최대 256개의 원소를 가질 수 있습니다.
TShiftState() << ssCrtl
라고 하면 TShiftState 타입 임시 집합 객체에 ssCtrl 값을 insert한다는 의미입니다.
Set<type, minval, maxval>::operator<<()가 겹지정(overloading)되어 있기 때문입니다.
반대로
TShiftState() >> ssCrtl
라고 하면 ssCtrl 값을 삭제한다는 의미지요.
VCL의 많은 곳에서 이 Set 타입을 사용하고 있습니다.
(예를 들어 StringReplace() 함수)
자세한 것은 Set의 도움말을 참고하세요.
: 빌더를 실행시키고 소스에
: OpenCommand->ShortCut = ShortCut(Word('O'), TShiftState() << ssCtrl);
: 이렇게 쓰신후에 ssCtrl위에 마우스를 놓고.. 오른쪽 버튼누른후에...Find Declaration을
: 선택하면..
: enum Classes__1 { ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble };
: 이부분이 나옵니다.
:
: 그러니 TShiftState() << 2 라고 생각하시면...
만약,
Set<char, 0, 255> charset;
일 때,
charset << 255;
라고 하면, charset을 255비트 쉬프트한다는 의미인가요? -_-;;
하여튼, C++의 연산자 겹지정(operator overloading)에 항상 주의하셔야 합니다.
기본 타입이 아닌, 클래스에 사용된 연산자는 오버로딩되었다는 것을 유의하세요!
: 너무 주저리주저리 늘어 놓은것 같군요... 즐거운 하루 보내세요.
:
:
: 윤종희 님이 쓰신 글 :
: : This line creates a shortcut, Ctrl+O, at run time and assigns it to the Open command on a File menu.
: :
: : OpenCommand->ShortCut = ShortCut(Word('O'), TShiftState() << ssCtrl);
: :
: : ShortCut 예제를 보니깐 위에 예제가 나오더라구요.
: :
: : 예제중에 << 라는게 있는데 이게 무슨뜻인가요?
: : TShiftState() << ssCrtl .... 허허...
: :
: : 행복하세요.. ^^
: :
: : 24살 늦은 여름 [# 윤종희 #]
|