본문 바로가기
나머지/IT개발.잡다한것.

win API 캐럿 Caret

by 무늬만학생 2012. 9. 13.
반응형

api -캐럿(Caret)


캐럿이란? 워드프로세서나 익스플러로 입력창에 보면 깜박깜박 거리는 모양을 캐럿이라고 부른다. 


커서는 마우스 포인터을 이야기 합니다. 


그럼 캐렛에 대해서 간단히 요약해 보겠습니다. 


----------------------------------------------------------------------------- 

  CreateCaret();  캐럿을 만들어 줍니다. 

  SetCaaretPos(); 캐럿의 좌표을 설정합니다. 

  ShowCaret();    캐럿을 보여줍니다. 

  HideCaret();    캐럿을 숨긴다. 

  DestroyCaret(); 캐럿을 삭제합니다. 

----------------------------------------------------------------------------- 

캐럿을 사용하기 위해서는 WM_SETFOCUS , WM_KILLFOCUS 를 같이 사용합니다. 


WM_SETFOCUS 는 현재 프로그램을 선택하였을경우 실행합니다. 


WM_KILLFOCUS 는 현재 프로그램 이외의 프로그램을 선택하였을경우 실행합니다. 


간단히 말하자면 현재윈도우을 선택하면 실행하고 다른윈도우을 선택하면 종료한다는 말과 같다. 


  

캐럿 생성함수 

----------------------------------------------------------------------------- 

  BOOL CreateCaret( 

  HWND  hwnd, 

  HBITMAP  hbmp, 

  int  nWidth, 

  int  nHeight 

  ); 

----------------------------------------------------------------------------- 

hWnd : 핸들 

nbmp : 비트맵 핸들을 지정한다. 

nWidth : 캐럿의 넓이 

nHeight : 캐럿의 높이 


  


캐럿 위치함수 

----------------------------------------------------------------------------- 

  BOOL SetCaretPos( 

  int  nX,  // x 좌표 

  int  nY  // y 좌표 

  ); 

----------------------------------------------------------------------------- 


  

캐럿 보이기 

----------------------------------------------------------------------------- 

  BOOL ShowCaret( 

  HWND  hwnd 

  ); 

----------------------------------------------------------------------------- 



캐럿 숨기기 

----------------------------------------------------------------------------- 

  BOOL HideCaret( 

  HWND  hwnd 

  ); 

----------------------------------------------------------------------------- 

  


캐럿 삭제하기 

----------------------------------------------------------------------------- 

  BOOL DestroyCaret( VOID ); 

----------------------------------------------------------------------------- 

  


간단한 예제 

----------------------------------------------------------------------------- 

  LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) 

  {          

          switch(message)            

          {          

          case WM_DESTROY:          

                PostQuitMessage(0);          

                return 0;          

          case WM_SETFOCUS:          

                CreateCaret(hWnd,NULL,10,20);          

                SetCaretPos(10,10);          

                ShowCaret(hWnd);          

                return 0;          

          case WM_KILLFOCUS:          

                HideCaret(hWnd);          

                DestroyCaret();          

                return 0;          

          }          

          return(DefWindowProc(hWnd,message,wParam,lParam));          

  } 

----------------------------------------------------------------------------- 

위 예제을 실행하면 캐럿이 깜박거리느것을 볼수 있다. 

그상태에서 다른윈도우을 선택하면 캐럿이 사라지는것을 볼수 있다.


출처 : http://www.qdata.co.kr/bo/bbs/board.php?bo_table=api&wr_id=80

반응형