케이피's 불량블로그!

블로그 이미지

케이피

OOP, Debugging... 인생의 숙제들..... [블로그의 글을 맹신하면 곤란]

캐럿 '_'

잡다한 정보들(기타정보) 2008. 5. 20. 01:13

캐럿

CWnd는 다음과 같이 7개의 캐럿 함수를 제공한다. 그리고 제공되지는 않지만 ::DestroyCaret 함수도 반드시 필요한 함수이다.

CreateCaret - 비트맵을 이용하여 캐럿을 만든다.

CreateSolidCaret - 실선 캐럿이나 블록 캐럿을 만든다.

CreateGrayCaret - 회색 선 캐럿이나 블록 캐럿을 만든다.

GetCaretPos - 캐럿의 위치를 얻는다.

SetCaretPos - 캐럿의 위치를 설정한다.

ShowCaret - 캐럿을 표시한다.

HideCaret - 캐럿을 감춘다.


** ::DestroyCaret 생성된 캐럿을 파괴한다.


캐럿은 동일한 스레드에서 실행되는 모든 창에 의해 공유되는 스레드 단위 자원이다.


캐럿을 사용하는 규칙은 다음과 같다.


  1. 입력 포커스를 받을 때 캐럿을 만들어야 하고 입력 포커스를 잃을 때는 삭제해야 한다.


  2. 캐럿이 만들어져 있다해도 ShowCaret를 해야 표시된다. HideCaret를 하면 숨길 수 있다.

    HIdeCaret를 두번연속 했다면 ShowCaret도 두번해야 캐럿을 다시 볼 수 있다.


  3. OnPaint 외부에서 캐럿을 포함하고 있는 창 영역을 그릴 때는 캐럿을 숨겨야 한다.

    (안그러면 화면이 깨진다.)

    OnPaint 안에서 캐럿을 숨기거나 다시 표시할 필요는 없다.

    ::BeginPain와 ::EndPaint가 알아서 해준다.


  4. SetFocusPos로 캐럿을 이동시킬 수 있다.

    즉, 윈도우가 자동으로 이동시켜주지 않는다. 프로그래머가 알아서 해야 한다.



캐럿의 폭을 찾 테두리의 폭에 맞추는 경우도 있다.

SM_CXBORDER 값과 함께 ::GetSystemMetrics를 호출하면 창 테두리의 폭을 알 수 있다.


고정폭 글꼴에서는 캐럿의 폭과 높이를 글자 하나의 크기와 같도록 할 수도 있다.


캐럿이동은 CWnd::SetCaretPos로 한다.


고정폭 글꼴은 문자의 위치에 한 문자의 폭을 곱하면 새로운 문자의 위치를 알 수 있다.


가변폭 글꼴은 CDC::GetTextExtent나 CDC::GetTabbedTextExtent 함수를 이용하여 논리적 단위로 가변폭 글꼴의 문자열 폭을 계산할 수 있다.


** CWnd나 CWnd를 상속받은 창에서 캐럿을 사용하려면 대단히 귀찮은 작업들을 많이 해줘야 한다.   따라서 웬만하면 CEdit와 같은 컨트롤로 해결하도록 한다.

그러나... CEdit와 같은 클래스로 할 수 없는 다양한 에디팅처리가 꼭 필요하다면 할수 없이 캐럿을 사용해야 한다.



RichEdit에서 캐럿을 포인트 단위로 보이게 할수는 있지만 실제로 위치 시킬순 없어!!!!!
변환 시키는 과정이 필요~!~!~!

CPoint ptCaret = m_richTest.GetCaretPos(); // 카렛의 위치를 구합니다.

    int nChar;
// 카렛 위치에 해당하는 것이 몇 번째 글자인 지를 알아냅니다.
nChar = SendMessage(EM_CHARFROMPOS, 0, (LPARAM)&pt);
// 그 부분을 선택합니다. 시작과 끝이 같게 합니다.
GetRichEditCtrl().SetSel(nChar, nChar);

Posted by 케이피
블로그 이미지

OOP, Debugging... 인생의 숙제들..... [블로그의 글을 맹신하면 곤란]

by 케이피

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

  • Mentor
  • excel
  • 엠마스톤
  • MFC
  • trace
  • DLL
  • SmartClient
  • bug
  • CNN
  • XML
  • CView
  • c#
  • dbgView
  • LPCSTR
  • JAVA 맛보기
  • 8강전
  • CString
  • IME
  • vs2008
  • debugging
  • 객체지향
  • OOP
  • 유로2008 일정
  • Automation
  • Emma Stone
  • 최적화?
  • activex
  • 안드로이드
  • 최강 볼걸
  • MFC Tip

글 보관함

«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

링크

카테고리

전체보기 (98)
Qt의 오묘함 (1)
영양가없는이야기(개인사) (1)
주체못할파괴본능(디버그) (5)
넌왜C++을C처럼쓰냐?(OOP) (2)
잡다한 정보들(기타정보) (53)
귀찮아...(유용링크) (13)
참 잼난다(취미) (6)
JAVA 의 향기~(자바) (2)
코딩을부탁해(Rapid Coding) (0)
베스트똘추짓(개고생리스트) (11)
매운핫소스(허접소스) (1)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
케이피's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

케이피's 불량블로그!

OOP, Debugging... 인생의 숙제들..... [블로그의 글을 맹신하면 곤란]

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 전체보기 (98)
    • Qt의 오묘함 (1)
    • 영양가없는이야기(개인사) (1)
    • 주체못할파괴본능(디버그) (5)
    • 넌왜C++을C처럼쓰냐?(OOP) (2)
    • 잡다한 정보들(기타정보) (53)
    • 귀찮아...(유용링크) (13)
    • 참 잼난다(취미) (6)
    • JAVA 의 향기~(자바) (2)
    • 코딩을부탁해(Rapid Coding) (0)
    • 베스트똘추짓(개고생리스트) (11)
    • 매운핫소스(허접소스) (1)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바