기본 콘텐츠로 건너뛰기

6월, 2007의 게시물 표시

BuildAssist

일일 빌드를 위한 배치 파일을 보다 쉽게 만들기 위한 간단한 프로그램입니다. 컴파일러 파일 설정 : 커맨드 라인상에서 컴파일을 위한 프로그램을 각각 VC6.0 , .NET 2003 , VB6.0에 대해서 설정을 합니다. 패키지 파일 : 인스톨러 프로그램을 설정합니다. NSIS의 경우 : makensis.exe Window Installer의 경우 : DEVENV.EXE 패키지 파일을 설정합니다. 결과 파일을 저장할 폴더 : 컴파일 결과를 저장할 폴더를 설정합니다. 빌드할 프로젝트들... : 빌드할 프로젝트들을 설정합니다. Compiler : < VC6.0 , NET 2003 , VB6.0 > 중 하나 선택 Mode     : < Release  , Debug > 중 하나 선택 Project   : 프로젝트 파일 선택 OK 버튼 : 저장할 배치 파일 이름을 설정합니다. 첨부 파일

Doxygen - Visual Studio 6.0 에서 Doxybar쓰기

Seize the day | 더미 http://blog.naver.com/pokev25/80001993980 참조 URL - http://www.gpgstudy.com/gpgiki/DoxygenTutorial 1. 필요파일 다운로드 Doxygen - http://www.doxygen.org/index.html Doxybar - http://doxbar.sourceforge.net/ MS HTML help workshop - http://msdn.microsoft.com/workshop/author/htmlhelp 2. 설치 Doxygen과 help workshop은 setup진행 Doxybar는 적절한 위치에 압축을 풀어 놓는다. (위의 참조 URL에선 path설정이 필요하지만 setup을 한경우는 자동 설정된다.)     3. 환경설정 Doxygen - 기본 설정파일을 만들자 도스창을 열고 doxygen -g 기본파일 (doxyfile)이 생긴다 boxybar설정할때 필요하므로 doxygen폴더에 넣어두자 노트패드 같은것으로 이 파일을 열어서 OUTPUTLANGUAGE를 Korean으로 고친다. Doxybar - 퍼온다. 필요한 부분만 코멘트 처리함 Installation Do the following to install the tool: Start developer studio. From the "Tools" menu select "Customize...". Select the "add-ins and Macro Files" tab. Press "Browse" and select files of type "add-ins (.dll)". Browse to the location of doxbar.

IE 에서 DHTML Editing 컨트롤을 이용한 MFC OCX의 탭 키 처리 문제

IE 에서 DHTML Editing 컨트롤을 이용한 MFC OCX의 탭 키 처리 문제 현상 DHTML Editing 컨트롤을 Embed하여 MFC OCX를 작성한 경우, IE에서 이 컨트롤을 사용하면 DHTML Editing 컨트롤에서 방향 키 및 탭 키가 동작하지 않습니다. 위로 가기 원인 IE 컨테이너가 Accelerator Key에 대한 이벤트를 MFC OCX에서만 처리할 수 있도록 해주기 때문입니다. 즉, IE 에서 MFC OCX에 Embed된 DHTML Editing 컨트롤이 Accelerator Key인 탭 키 및 방향키에 대한 이벤트를 처리하지 못하기 때문입니다. 위로 가기 해결 방법 IOleInPlaceActivateObject 인터페이스를 이용하여 MFC OCX의 TranslateAccelerator 메소드가 호출되었을 때 DHTML Editing 컨트롤의 TranslateAccelerator 메소드가 강제적으로 호출되도록 합니다. 예제 코드 // MFC OCX의 이벤트 핸들러 BOOL CTest1Ctrl::PreTranslateMessage(MSG* pMsg) { IOleInPlaceActiveObject* piOleInplace; IUnknown* piUnknown; switch (pMsg->message) { case WM_KEYDOWN: case WM_KEYUP: switch (pMsg->wParam) { // 처리하려는 키에 대하여 case VK_UP: case VK_DOWN: case VK_LEFT: case VK_RIGHT: case VK_HOME: case VK_END: OutputDebugString ("Key down for Arrow

메모리 풀링

탑건매직 | 탑건매직 http://blog.naver.com/topgunmagic/120033903901 메모리 풀링? : 메모리 풀링이란 간단히 말해서 필요할때마다 new나 malloc을 사용하는것이 아니고, 필요한 만큼에 메모리를 미리 잡아두고 사용하는것을 말한다. 그럼 이것을 어따쓰냐.... 잦은 메모리 할당은 성능을 저하시킬수 있다. 따라서 한번에 미리 메모리를 잡아두고 사용한다면 성능면에서 매우 효율적일때 사용될수 있다. 위 MemPooler.h는 Edited from C8MemPool class (Hitel, gma 7 3) - 1CoinClear - 라는 사람이 만든건데, 메모리 풀링이 어떤식으로 돌아가는지 분석 해보도록 하자. 메모리 풀링은 언제 사용하나?? new와 delete가 빈번하게 반복 발생될때 메모리풀을 사용합니다. 게임에 사용자가 접속할때마다 사용자 객체를 new해주고 접속을 해제할때마다 delete를 해준다면 속도는 물론이고 메모리 단편화의 문제가 발생할 수 있기 때문에 시작할 당시 n개의 사용자 객체를 생성한뒤 접속할때 가져다 쓰고 접속을 해제할때 제거하지 않고 다시 사용할 수 있게 해주는 경우도 해당합니다. template<class Type> class MemPooler 템플릿 클래스를 사용하였습니다. 왜일까요? Type이 쓰이는 부분들을 일단 살펴 보도록 하겠습니다. m_nListBlockSize=sizeof(BlockNode)+sizeof(Type); 음...보시면 일단 사이즈를 잡는건데요. 그렇습니다. MemPooler 클래스 설계시 우리는 필요한 만큼의 메모리를 잡아야 하는데 이시점에서 이 필요한 만큼의 메모리가 어느정도인지 우리는 알수 없습니다. 이럴때 한번 사용했군요. Type* Alloc() 한 블럭을 사용할 시 사용가능한 메모리를 가리켜 그 주소를 리턴하는 함수인데요. 여기서 한블럭이라는건 차차 설명 하도록 하지요. 우리는 메모리풀링을 만들시 필요