질문과 답변

API)화면 이동/확대후, 변경된 화면에서 클릭위치 설정법(?) 질문드립니다. 날짜:2022-4-5 8:35:04 조회수:146
작성자 : mr100
포인트 : 10
가입일 : 2020-05-29 19:54:47
방문횟수 : 14
글 1개, 댓글 4개
소개 :
작성글 보기
쪽지 보내기
StretchBlt 함수를 보다가 궁금증이 생겨 질문드립니다.

아래 그림 중 2번째 상황에서, 왼쪽그림의 <클릭 위치 0 > 부분을 눌러야 실행이 되도록 해 놓고,
확대한 후에,  오른쪽 그림중 <클릭위치1> 이 아니라 <클릭위치 2> 를 눌러야지 실행되게끔 하는 방법이 별도로 있나요?
아니면 얼만큼 확대/이동 됐는지 직접 계산해서 별도로 코딩해 줘야 되는 건가요?
[전제] 클릭되는 부분은 버튼 or 에디트박스 같은것이 아니고 그냥 그림이고 WM_LBUTTON , lParam 확인하여 실행된다고 가정

책에서 어디부분봐라 or 인터넷 검색 키워드, 어떤거든지 조언해 주시면 감사하겠습니다.

목록보기 삭제 수정 신고 스크랩

작가K 4월7일 3:10:43  

별다른 방법은 없고 확대, 스크롤시 그만큼 실제 좌표를 조사해서 적용해야 합니다. 
그래서 모든 프로그램은 논리 좌표와 물리 좌표를 구분해서 관리합니다. 논리 좌표는 문서상의 좌표이며 확대나 스크롤이 가능하고요, 물리 좌표는 좌상단을 기준으로 한 픽셀 좌표이며 스크롤, 줌 등을 고려하여 계산해 냅니다. 

mr100 4월7일 3:37:07  

답변 감사드립니다. 저절로 해주는 방법은 없지만 간단한 것이니...
혼자 공부하다 보니, 물리좌표,논리좌표 이런 개념자체가 있다는걸 몰랐습니다. 인터넷 검색해보니, 이런저런 내용들이 많이 있네요. 이런 개념이 있다는걸 알려주신게 훨씬 더 도움이 된것 같습니다. 감사드립니다.
글을 보니  코로나 때문에 고생이신것 같은데..쾌차하시길 바랍니다.

Program 4월19일 10:57:54  

좌표를 조사해서 구현하는 방법이 제일 정확한 방법이겠지요
나의 경우는 간단히 StretchBlt함수를 실행할때 flag=1 변수를 0에서 1로 변경해 놓고
필요시 flag 변수값이 0 이면 아직 StretchBlt 상태가 아니구나
flag 변수값이 1 이면 StretchBlt 함수가 실행되었구나 하여 좌표조사 없이
이렇게 아주 간단히 판단 하기도 합니다


로그인하셔야 댓글을 달 수 있습니다.