Mapping Messages to Functions

개발과 트러블슈팅 2011. 11. 11. 17:52 Posted by 양고

출처: http://msdn.microsoft.com/en-us/library/dey7ke4c.aspx



Mapping Messages to Functions

The Properties window enables you to bind message handlers (member functions of MFC user-interface classes) to the messages generated by your application's resources. They use MFC message maps to create the binding.

When you use Class View to create a new class derived from one of the framework classes, it automatically places a complete and functional class in the header (.h) and implementation (.cpp) files that you specify.

NoteNote

To add a new class that does not handle messages, create the class directly in the text editor.

To define or remove a message handler using the Properties window

  1. In Class View, click the class.

  2. In the Properties window, click the Messages button.

    NoteNote

    The Messages button is available when you select either the class name in Class View or when you click within the source window.

    If your project has a handler for a message, then the name of the handler appears in the right column next to the message.

  3. If the message has no handler, then click the cell in the right column in the Properties window to display the suggested name of the handler as <add>HandlerName. (For example, the WM_TIMER message handler suggests <add>OnTimer).

  4. Click the suggested name to add stub code for the function.

  5. To edit a message handler, double-click the message in Class View and edit the code in the source window.

To remove a message handler, double-click the handler in the right column and select <delete>HandlerName. The function's code is commented out.


설명을 쓸 시간이 없어서 일단 이미지만 올린다!








 

1996년도 제작 중 역사의 뒤안길로 사라진 BB 프로젝트.
파일들을 살린 김에 그 캐릭터 소개도 할까 한다.

블로그에 올리기 위해 FLI 파일들을 FLI2GIF로 변환하였다.
http://jeff.bovine.net/Fli2Gif 참고.

1. 가야
주인공. 한국에서 도장을 경영하고 있다...는 설정이었다.
어느날 도장을 급습해온 '배달'에 의해 싸움에 휘말리게 된다.

숨쉬기(?) 운동 ver.1

 

숨쉬기 운동 ver.2 셰이딩까진 못했지만 조금 더 태권도스럽게 바꿈.

 

실신 후 일어나기

 

어퍼컷

 

 뛰어 차기 (앞,뒤)

 

 

옆 차기1,2

 

(류와 켄)의 내려 찍기. 격투 게임에 이 기술이 빠지면 섭섭하다.

 

돌려차기


 

돌려돌려 차기


 

하단 차기 1

 

하단 차기 2

 

 

같은 캐릭터끼리 싸우기 위해서 컬러 배리에이션은 필수! 팔레트만 바꿔주면 되니 대단히 쉽게 구현할 수 있었다.

2. 민수
가야의 형. 미국에서 조직(?)을 운영 중. 복장은 Virtua Fighter 2의 Jacky의 그것을 (많이) 참조 ㅋ 


 


 

원투!

3. 무스
중국 조폭...에 보디가드로 고용된 무인(?)
이넘도 그렇고 가야의 옆얼굴을 보면 '란마'의 영향을 많이 받은 듯.

 

 


 


 


 

 

 


4. 레슬롱
레슬링 캐릭터인데 어울리는 이름을 짓지 못했었다.
당시 대유행이던 Virtua Fighter 2의 '울프'에서 영향을 받은 것을 알 수 있다.

 

 

검은 색 컬러 배리에이션... 중간에 낀 것은 복면을 쓴 무스?

 

모태가 된 '울프'

지금 보면 상당히 중2... 아니 대2병적인 시나리오와 캐릭터이지만. 지금처럼 앱을 간단히 배포할 수 있는 시대였다면 어땠을까? 하는 생각도 든다.


 

 

대학 시절...

친구 한 넘과 진행했던 "Black Belt" (일명 BB) 프로젝트~!

 


그림은 주인공 가야와 그의 형 민수이다. 이 외에도 몇 명 더 있다 ㅋㅋ

내가 딜럭스페인트와 오토데스크 애니메이터로 그림을 그리고, 친구가 정영덕(WD40) 님의 라이브러리를 이용해 게임을 개발했었다.

당시 군대 문제와 대학원 진학 따위 여러 가지 문제가 겹쳐서 초기 버전만 만들어진 채 그만 역사 속으로 사라지고 말았지만...
(삼성이 애플한테 발리니까 소프트웨어를 키워야되네 어쩌네하고 공무원들이 난리신데, 우리나라에서 빌게이츠나 스티브잡스가 나오지 못하는건 순전히 군대 때문인 것 같다 ㅋㅋ)

어쨌든 15년이 지난 지금 몇 번의 백업을 거쳐 친구의 하드에 용케 남아있었던 것.
그 전에 만들었던 무수한(?) 닥터할로 그림과 애니메이션도 있으면 좋을 것을~~~ 어흑 ㅠㅠ

어쨌든 BB 도스용 게임 실행파일도 있고 애니메이션 파일인 FLI 파일도 남아 있던데 변환이 되면 유튜브에 한번 올려봐야겟다. 64비트 윈도라 그런지 게임 실행은 안 되고 FLI는 xnview로 볼 수 있는 상황이다.

이것 말고 횡스크롤 슈팅게임인 가오(GAO) 프로젝트도 있는데... 그것도 살려봐야겠다 ㅋㅋ

좀 더 자세한 소개: http://yango.tistory.com/175

엑셀에서 빈 줄만 지우기

개발과 트러블슈팅 2011. 8. 10. 13:31 Posted by 양고

CSV파일에 fprintf를 이용해 기록하면서 \n\r을 다 썼더니 한 줄 씩 건너뛰는 현상이 발생했다.

다시 돌리기는 귀찮고... 검색해보니 좋은 팁이 있었다.

http://hubpages.com/hub/Preparing-Reports-on-Excel-How-to-Delete-Empty-Lines-fast

우선 첫 열을 선택한다 (ctrl-space로 된다).
F5를 누르면 '이동' 대화상자가 뜬다.
옵션(S)...을 클릭한다.
'빈 셀(K)'를 선택하자.
그림과 같이 빈 줄만 선택되었다.
선택된 셀 중에 하나를 오른쪽 클릭하고 D를 눌러 삭제한다.
'행 전체(R)'를 선택하자 그럼 끝!

새 컴퓨터에 IE8이 깔려있는데 검색 툴바에서 빙신같은 Bing 밖에 등록이 안 된다.
추가 검색공급자 찾기 백날 해봐야 아래와 같은 Bing신같은 화면만 뜬다.


예전에 검색공급자 추가지정 페이지인지 갈려면 아래 링크로 가면 된다.
http://www.microsoft.com/windows/ie/searchguide/ko-kr/default.mspx?dcsref=http://runonce.msn.com/runonce2.aspx


물론 엠파스에 하나포스 드림위즈까지 있지만 구글은 없는데, 구글 검색창에 TEST라고 입력했을 때의 결과 주소를 붙여넣으면 된다.
몇 가지 쓸만한 주소들:

구글: http://www.google.co.kr/#sclient=psy&hl=ko&newwindow=1&source=hp&q=TEST&aq=f&aqi=g3g-s1g1&aql=&oq=&pbx=1&fp=1&biw=1056&bih=577&cad=b
구글 학술검색: http://scholar.google.co.kr/scholar?q=TEST&hl=ko&lr=
위키피디아(영문): http://en.wikipedia.org/wiki/TEST
야후! 사전: http://kr.dictionary.search.yahoo.com/search/dictionaryp?subtype=all&prop=&p=TEST
참고: http://msdn.microsoft.com/en-us/library/ms182069(v=VS.90).aspx
다음과 같이 '출력'이 아니라 '오류 목록'을 보면 된다. 그림과 같이 '다른 창'이라는 보기 메뉴에 숨어 있다. -_-+


Windows 7 64bit로 갈아탄 후,
Microsoft Lifecam HD-5000 이 녀석이 OpenCV에서 작동할 생각을 않는다.

포기하고 Logitech Quickcam Sphere를 다시 연결해서 쓰고 있었지만
이넘은 또 기본 해상도가 320x240인데다가
화면이 시커멓게 어둡게 나오는 증상이 있어서...
상당한 불편을 겪고 있었다.

오늘도 웹캠 때문에 짜증을 거듭하다... 마지막으로 한번만 찾아보자... 하고 찾은 것이 그만
제대로 된 솔루션이었다.

http://dusijun.wordpress.com/2011/01/11/opencv-unable-to-capture-image-from-isight-webcam/

C:\OpenCV2.2\modules\highgui\src\precomp.hpp 파일을 찾아서 다음과 같이 바꾸고,
OpenCV를 다시 빌드하면 된다.

#if !defined WIN32 && !defined _WIN32
#include “cvconfig.h”
#else
void FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin );
#endif

를 아래와 같이 바꾸자.

#include “cvconfig.h”
#if defined WIN32 || defined _WIN32
void FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin );
#endif


즉 64비트 윈도에서는 cvconfig.h가 include되지 않았던 것으로 보인다.

두시준 선생 고마워요~!


[2011.4.14 추가]
OpenCV를 재설치하고
위 과정을 다시 해줬는데
웹캠이 또 먹통이다.
반나절 개고생 후 해결:


lib만 새로 빌드하고
dll은 옛날 버전을 그대로 쓰고 있었다~~!!

위 그림과 같이 반드시 새로 빌드된 dll을 카피해주자... ㅠㅠ
내 경우 C:\OpenCV2.2\vs2008\bin\Debug에 있다.

CUDA 개발환경 설정하기

개발과 트러블슈팅 2011. 4. 6. 19:22 Posted by 양고

http://stackoverflow.com/questions/2046228/how-do-i-start-a-new-cuda-project-in-visual-studio-2008

위 링크에 나온 대로 커스텀빌드를 추가하면 된다.
(자세한 내용은 추후 보충하겠음...)

그리고 atomicAdd와 관련한 오류가 발생하면 아래와 같이 프로젝트 속성을 바꿔주자. GPU Architecture (1) 을 sm_20으로 바꿔주면 된다.



include 디렉터리의 충돌

개발과 트러블슈팅 2011. 3. 22. 11:55 Posted by 양고
그림과 같이 분명히 VC++ 디렉터리 포함 파일 경로를 설정했음에도 불구하고 다음 include 문에서 에러가 발생했다.

#include <Cg/cg.h>
#include <Cg/cgGL.h>


그것은 다음과 같이 프로젝트 속성에서 추가 포함 디렉터리가 설정돼 있었고, 이들 중 "..\..\..\include" 아래 "Cg" 디렉터리가 존재하기 때문인 것 같다. (저 추가 포함 디렉터리를 삭제하니 순순히 컴파일되었다.)


즉 #include <Cg/...> 라고 했을 때, 컴파일러 입장에서는 어느 Cg? 라고 물어볼 수 있는 상황. 당연히 두 경로 중 Cg/ 아래 cg.h 파일이 있는 경로를 사용할 거라고 생각했지만, 실제로는 #include <Cg/ 까지 나온 순간, 이미 저 (우선순위가 위인) "..\..\..\include\Cg\" 경로로 결정해버리는 것 같다.

이런거 나만 몰랐던거임? ㅠ_ㅠ