본문 바로가기

분류 전체보기691

unicode 와 ansi, std::string 과 CString 상호 변경하기 unicode 와 ansi 를 섞어 쓰면서 std::string 과 std::wstring, CString 을 상호 변환하는 방법을 살펴 보자. unicode 를 쓰면서 MFC에서 STL 을 쓰기 위해선 이들을 서로 변경해야 할 경우가 많아 이 곳에 정리해 둔다. 환경 : Visual Studio 2010 on Windows 7 Professional SP1, English, 64-bit. 우선 기본적으로 MFC에서 unicode 과 ansi 를 상호변환하기 위해서는 CF2CT 형식을 따르며, 이 때 F 와 T 는 A와 T 중 하나의 값이 될 수 있다. T는 _T macro 에서 알 수 있듯이 multibyte 로의 변환을 의미하는 것이고, A 는 ANSI 를 의미한다. 따라서 ansi 에서 unicod.. 2013. 1. 7.
Pie (파이) 그래프를 그려 보자 pie 그래프를 그려 보자. CDC::AngleArc 를 사용하면 아주 간편하게 그릴 수 있다. pie 그래프를 그리기 위해서는 우선 부채꼴을 그려야 할 것이다. 부채꼴을 그리기 위해서는 CDC::AngleArc 함수를 사용하면 되는데, 우선 프로그램 상에서의 좌표계를 살펴 보자. 모니터에서 0 도는 위와 같이 3시 방향이다. + 각도는 위처럼 반시계 방향으로 돌아가는 각도이다. 보통 sin 이나 cos 같은 수학함수의 파라미터는 단위가 radian 인데 AngleArc 는 (희안하게도 불편하게) degree 이다. 이 점을 주의하자. 어쨌든 위와 같다는 것을 기억하고, AngleArc 를 보면 다음과 같다. AngleArc 에서는 우선 모니터 좌표계로 중심점 (x,y) (위에서 푸른 점) 을 설정 후,.. 2013. 1. 5.
불면인가 사흘 째 잠을 잘 못 자고 있다. 이틀동안 합해서 8시간을 잤으면 당연히 오늘은 지금쯤 골아 떨어져 있어야 함에도 불구하고 자려고 누우면 도통 잠이 오질 않는군. 초등학교 때부터 대학 때까지 잠에 관한 많은 전설을 만들어 냈던 내가 불면 때문에 이럴 것이라고는 상상조차 하지 못했었는데, ㅋ. 아주 많은 전설 중 두 개만 말해 보자면, 초등학교 때는 학교 갔다 집에 오는 도중 너무 졸려서 길옆에서 책가방 베고 잔 적이 있었고, 고등학교 때는 내가 너무 자니까 앞에서 "야, 쟤 아픈 거 아냐? 아까부터 계속 자." 라는 소리가 들렸었지... ㅋㅋ 고등학교 수업 시간에 자다가 교무실에 끌려 가기를 여러 번, 대학 때도 그 습관을 못 버려서 강의 시간에 꽤나 졸았었는데, 어느 순간, '만약 내가 이 잠조차 내 .. 2013. 1. 4.
오랜 시행 후 프로그램이 멈추는 경우 - GDI 문제 다음과 같은 에러가 있다는 연락을 받았다. 1,2,3 trials을 한 번에 시행할 경우 중간에 멈추는 버그 발생 환경 : Visual Studio 2010 on Windows 7 Professional SP1, English, 64-bit. 각 trial 은 대략 50~60개의 이미지를 보여주고 환자의 입력을 받는 것인데, 각 이미지 사이에 무반응자극 이미지를 한 장씩 보여 주게 되어 있다. 이런 상황에서 위와 같은 에러가 발생했다는 것은 대략 GDI 에 관련한 문제임을 직감할 수 있다. 따라서 디버깅을 하기 위해 작업관리자에서 GDI Objects 의 개수를 보여 주는 컬럼을 켠 상태에서 프로그램을 실행시켰다. 역시나, 객체 수가 계속 올라 간다. 즉, 문제는, GDI 객체가 제대로 해제되지 않아서 .. 2013. 1. 1.