2011-09-26 6 views
2

코코아의 텍스트 편집 컨트롤에서 현재 캐럿 위치의 창 좌표를 가져 오는 가장 좋은 방법은 무엇입니까? EM_POSFROMCHAR 삽입 점의 창 좌표 가져 오기 - 코코아

  • GTK - - gtk_text_view_get_iter_locationgtk_text_view_buffer_to_window_coords를 사용하여 여기에

    내가 다른 플랫폼

    1. Windows에서 그렇게하는 방법이다.

    나는 코코아를 사용하여 어떻게 같은 결과를 얻을 수 있는지 궁금합니다. 나는 MacOSX 10.6.8을 사용하고 있으며 C++을 사용하고있다. textView 가정

  • +0

    나는 NSTextView에 흥미를 느끼지 않을 것이다. 이 문제를 조사해 주셔서 감사합니다. –

    +0

    질문이 하나 더 있습니다 : 질문을 C++로 태그했지만 Cocoa는 주로 Objective-C API를 제공합니다. Objective-C (또는 Objective-C++)는 실행 가능한 솔루션입니까 아니면 C++에만 관심이 있습니까? –

    +0

    문제에 접근하는 방법에 대한 아이디어는 충분할 것입니다. 언어 문제를 해결할 수 있습니다. 다시 한번 감사드립니다. –

    답변

    5

    텍스트보기로 지적하고 window 창을 가리키는 변수 변수입니다 :

    // -firstRectForCharacterRange:actualRange returns a frame rectangle 
    // containing the insertion point or, in case there's a selection, 
    // the first line of that selection. The origin of the frame rectangle is 
    // in screen coordinates 
    NSRange range = [textView selectedRange]; 
    NSRect screenRect = [textView firstRectForCharacterRange:range actualRange:NULL]; 
    
    // -convertRectFromScreen: converts from screen coordinates 
    // to window coordinates 
    NSRect windowRect = [window convertRectFromScreen:screenRect]; 
    
    // The origin is the lower left corner of the frame rectangle 
    // containing the insertion point 
    NSPoint insertionPoint = windowRect.origin; 
    
    +1

    C++에서? C++처럼 보이지 않습니다. – Puppy

    +1

    @Dead 질문의 댓글 섹션을 참조하십시오. –

    +0

    그것은 훌륭하다.. 많이 감사한다. –

    1

    다음 방법은 문서에

    - (void)drawInsertionPointInRect:(NSRect)aRect color:(NSColor *)aColor turnedOn:(BOOL)flag

    을 라고 말합니다

    이 메소드가 불려 갔을 때에 리시버에 락된다 이 메서드를 직접 호출 할 필요는 없습니다.

    NSTextView 하위 클래스에서이 방법을 재정의하고 슈퍼 구현을 호출하면 적어도 코코아에서 필요로 할 때 삽입 지점의 위치를 ​​알 수 있습니다.

    +0

    C++에서? C++처럼 보이지 않습니다. – Puppy

    +0

    Cocoa (Apple에서 제공하는 Foundation 및 AppKit 프레임 워크의 조합)를 사용하려는 경우 api는 Obj-C에 있습니다. NSTextView에 대한 문서를 찾으면 Obj-C 메소드를 사용하는 Obj-C 인터페이스입니다. 주변을 돌아 다니는 일은 없습니다. – jbat100