MFC 바탕 화면 DC 받기
프로그래밍 2009/12/12 00:49 |바탕화면(전체화면) DC 를 사용하여 바탕화면에 그리거나 이미지를 받아 처리하고 싶을 때,
다음과 같이 하면 된다.
어.. 이거 내가 알던 문법강조기랑 비슷한 것같은데..
그건 구글 것이 아니었는데.. 구글이 샀나..
내가 허접하게 만든 것보다 좋아보인다~


Default 안드로이 Update 주소가 https프로토콜을 사용하는데...
저의 경우 회사에서도, 집에서도 먹통이더군요.
이 경우, 차분히 Setting에서
Force https://블라블라 source to be fetchedn using http://..
를 체크해주면 잘됨
select 함수
2개 이상의 입출력을 처리하기 위해서는 어떻게 해야할까 ...
IO 개수만큼 프로세스 혹은 쓰레드를 생성하여 그것을 처리하게 만들 수 있다.
하지만 select 함수를 사용하면 비교적 쉽게 이 문제를 해결할 수 있다.
#include <sys/select.h>
int select(int nfds , fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout);
FD_CLR(int fd, fd_set *set);
FD_ISSET(int fd, fd_set *set);
FD_SET(int fd, fd_set *set);
FD_ZERO(fd_set *set);
파라미터
nfds ; 입축력 파일 디스크립터의 범위를 표현한다.
ndfs 는 체크할 파일 디스크립터 집합의 최대 값보다 1 큰 값으로 지정한다.
readfds ; 입력 체크를 위한 파일 디스크립터 집합을 저장한다.
fd_set 은 정수 배열을 가지고 있으며, 비트 마스크로써 체크할 파일 디스크립터를 표시해 둔다.
writefds ; 출력 체크를 위한 파일 디스크립터 저장.
errorfds ; 에러에 대한 체크
timeout ; select 함수가 블록되는 시간, NULL 이 되면 입력이 있을 때까지 계속 블록된다.
반환값 ; 성공 시, 준비된 파일 디스크립트 수
실패 시, -1 을 리턴하며, errno 를 설정함.
errorno
- EBADF ; 사용 불가한 파일 디스크립터가 하나 이상 존재
- EINTR ; 시그널에 의한 인터럽트
- EINVAL ; 시간 제한이 잘못되었거나, nfds 가 0 보다 작거나 FD_SETSIZE 보다 큼.
구버전 UNIX 는 select 함수가 sys/time.h 에 정의 되어 있지만,
POSIX 표준은 sys/select.h 에 있음.
잘 쓰여진 글
http://cyhome.cyworld.com/?home_id=a2103157
싸이월드라 막혀 있다면 그 대신
http://jangsalt.tistory.com/entry/C-%EC%96%B8%EC%96%B4-select-%ED%95%A8%EC%88%98
리눅스 시스템이라면 epoll에 대해서도 알아보고,
윈도우즈라면 WSAAsyncSelect, WSAEventSelect에 대해서도 알아봐~
쓰레드와 관련된 다양한 내용들, 그중에서도 주로 pthread와 관련된 내용을 다루게 됩니다.
베지어 커브 (Bézier curve)
베지어 커브는 1962년 프랑스 엔지니어인 Pierre Bézier에 의해 만들어 졌는데,
이 커브는 그가 자동차 차체를 디자인 하기 위한 목적으로 사용한 커브였다.
이 커브는 몇 개의 조절점(Control points)들로 구성되며,
조절점들은 a parametric mathematical function에 의해 커브 모양을 결정한다.
커브의 차수는 "조절점의 개수-1"차로 결정되는데, 다음 공식에 의해
커브를 구성하는 점들의 위치가 결정된다
조절점 중 처음과 끝 점은 곡선을 지나가고, 나머지는 어느 곡선과 만나지 않는다.
곡선은 조절점으로 이루어진 다각형을 벗어나지 않는다.
조절점이 하나 뿐이면 그냥 점이다.
조절점이 두 개이면 직선이다.
조절점이 3 개인 경우는 다음과 같이 2차식이 된다.
B(t) = P0 * ( 1 - t ) 2 + P1 * 2 * t ( 1 - t ) + P2 t2
조절점이 4 개인 경우,
B(t) = P0 * ( 1 - t )3 + P1 * 3 * t * ( 1 - t )2 + P2 * 3 * t2 * ( 1 - t ) + P3 * t3
references
http://www.moshplant.com/direct-or/bezier/
http://en.wikipedia.org/wiki/Bernstein_blending_function
http://cagd.cs.byu.edu/~557/
베지어 커브네요.. ㅎㅎ
요즘도 쓰시는건지 아니면 예전에 하시던 일이 생각나셔서 정리하신건지.. ㅎ
이쪽으로 다시 혼자 공부를 해 볼까 해서 예전에 정리 한 거 였어요.
해 볼만 한 게 이런 거 뿐이더라구요 ^^
오오 이런 기능이!!!!
나도 몰랐는데..
내가 만든 왠만한 프로젝트는 커스텀 라이브러리들이 많아서..
유용하게 잘 쓰겠삼!
리비전 설정도 되고,
커밋할 때 알아서 외부 라이브러리는 제외됩니다.
svn st 하면 변경사항들은 전부 보여주구요.
여러모로 도움 될 겁니다 : )
댓글을 달아 주세요
정확하게는 '바탕화면'이 아니라 시스템 현재 화면을 얻는 것
화면을 캡쳐할 때는 유용하게 사용하지만..
화면에 그려봤자 창들이 새로 그리면 지워진다는거..
오 ~ 도사님 역시 예리 하십니다. ^^
저도 역시 화면 캡쳐 프로그램 만들면서 찾은 거였습니다.
캡쳐하면서 테두리 표시한 후에
캡쳐가 끝나면 지워지도록 ...
그냥 핸들이 0인 DC를 생성하면 대...
오호 그렇군요. 깔끔!