C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[54938] [질문]화상 키보드관련 질문입니다
칼스 [kalsaint] 1885 읽음    2008-10-18 11:55
안녕하세요~

오랫만에 들어와보네요!!ㅎㅎ

우선 질문을 하기전에 제가 만들고자하는것은 윈도우 자체적으로 있는 화상키보드와 비슷?혹은 똑같은 기능의

키보드를 만들어보는것입니다.

그러기 위해서 딱 한가지가 걸리는게 있는게 머냐면 마우스 버튼을 다운(이벤트겠죠)을 했을때

기존 포커스 즉 엑티브된 윈도우에서 클릭한 키보드 윈도우로 포커스 혹은 엑티브가 안되게 하는것입니다.

기존의 에디트 박스 같은 경우는 포커스가 잠시 키보드 윈도우로 왔다가 다시 에디트 박스로 가더라도 문자열의

마지막 포커스가 가기때문에 별 문제가 안될꺼 같지만!!!윈도우자체 화상키보드는 아예 포커스가 이동을 안하더라구요

그래서 제 나름대로 화상키보드를 분석을 해보니깐 원리는 간단했습니다.

일단 메모장에 포커스가 있다고 가정하고, 화상키보드의 버튼을 누르면 키가 입력됩니다.

1. 이부분은 윈도우로 메세지를 보내서 키가 입력된것처럼 한것으로 보임(이부분은 구현가능)

2. 키 위를 움직이면 마우스 무브 이벤트가 발생되면서 이전 포커스 혹은 엑티브 되었던 윈도우로 이동됩니다.
(이부부분 역시 구현 가능합니다)
단, 윈도우 창 자체를 클릭할때는 그냥 윈도우 처럼 인식하더군요~

3. 버튼이나 안에 있는 것들은 제가 보기엔 DC를 이용해서 그린거 같습니다.
   만약 그렇더라도 마우스 클릭 이벤트를 기존 볼랜드의 마우스 이벤트를 이용하더라도 화면 전환이 이루어졌습니다.

결론!!!넘 거창하네요^^;

이넘은 마우스 클릭 이벤트를 자체적으로 윈도우 메세지를 후킹해서 버튼 색깔 및 다시 그리기, 키보드 버튼 이벤트

발생~등등만 하고는 포커스 이동을 막는 무언가를 하는거 같습니다.

혹시 이부분을 대략적이라도 아시는 분이 있으시면 답변 좀 부탁드리겠습니다.

그럼~~^^

+ -

관련 글 리스트
54938 [질문]화상 키보드관련 질문입니다 칼스 1885 2008/10/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.