본문 바로가기

Robotics/Software Tech.

(148)
[MFC]SDI 클래스 접근 방법 CMainFrame* pFrame=(CMainFrame*) AfxGetMainWnd(); CMyDoc* pDoc=(CMyDoc*)pFrame->GetActiveDocument(); CMainFrame* pFrame=(CMainFrame*) AfxGetMainWnd(); CMyView* pView =(CMyView*)pFrame->GetActiveView(); CMyApp* pApp =((CMyApp*) AfxGetApp(); cpp 상단에 얻어오고자 하는 클래스의 헤더는 반드시 include해야함.
Flex2를 이용한 UI와 MFC 어플리케이션 연동 연동성이 큰 Flash와 윈도우 어플리케이션간 연동에 대해서는 많이 알려져있다. 간단하게는 Flash의 fscommand를 이용해서 MFC와 메세지를 주고 받을수 있다. 또는 External Interface라는것을 통해서도 가능하다. 이런측면에서 Adobe사의 Flex2 또는 Flex3가 쉽게 유저인터페이스를 구성할 수 있도록 환경을 제공한다. 그리고, 이것이 좋은것이 그래픽에 약한 프로그래머와 코딩에 약한 디자이너가 서로 부딪히며 일을 하는 시간이 줄어들것이기 때문이다. 그럼, Flex2와 MFC간에 어떤식으로 연동을 하고 체계를 잡을 것인가.. 여기서 그 방법으로 External Interface를 사용한다. 그리고, 어떤 메세지의 규칙을 정해서 이것을 dll로 만들어 버리면 어플리케이션 개발자들은..
Visual Studio 2008에서 병렬 컴파일로 컴파일 성능 향상시키기 Visual Studio 2008에서는 컴파일 성능 향상을 위해서 병렬 컴파일을 지원한다. VC++ 2008은 cl.exe용 멀티 프로세서 빌드 옵션인 /MP를 통해 소스수준의 동시 컴파일을 제공한다. /MP나 /MP[n] 형태로 사용 할 수 있다. 여기서 n은 프로세스의 수를 지정해 주는 역할을 한다. 프로세서 수를 지정하지 않으면 컴파일러는 시스템에서 사용 가능한 수의 논리 프로세서를 알아서 사용한다. 비주얼 스튜디오에서 적용하려면 [Project] 메뉴의 [Pro perties] 창에서 [Configuration Properties] 항목에서 C/C++ 항목의 [Command Line] 옵션 창에서 [Additional options] 항목에 /MP 또는 /MPn을 입력하면 된다. /MP 옵션은 관..
Visual Studio 2008의 새로운 기능 'Performance Wizard'
병렬 처리와 관련한 핵심 컨셉 병렬 처리 프로그래밍을 하려고 마음을 먹고, 또 멀티 코어 프로세서에 대해 관심을 가지기 시작하고, 프로그래밍을 하다 보면 많은 컨셉들이 있을것이다. 반드시 이해해야 할 중요하지만 매우 단순한 컨셉들을 살펴보겠다. 안녕하세요 제임스 랜더스 입니다. 오늘은 병렬 처리와 관련한 핵심 컨셉들을 알아보는 시간을 가지도록 하겠습니다. 병렬 처리 프로그래밍을 하려고 마음을 먹고, 또 멀티 코어 프로세서에 대해 관심을 가지기 시작하고, 그리고 실제로 프로그래밍을 하시다 보면 많이 들으시는 컨셉들이 있을 겁니다. 앞으로 제가 설명해 드릴 컨셉들은 반드시 이해해야 할 중요한 것들입니다. 실로 매우 단순한 컨셉들이기도 하죠. 한 번 살펴보겠습니다. 우선 가장 먼저 태스크/데이터 병렬 처리 입니다. 이들이 과연 무엇인지부터..
멀티코어 프로그래밍을 하기위해 어떻게 해야하는가.. 이제 더이상 싱글코어는 사용자에게 잊혀지고 있다. 듀얼코어는 기본, 쿼드코어.. 더 나아가서는 옥토코어가 곧 등장할거라고 한다. 그런데.. 실제로 사용해보니 싱글코어랑 듀얼코어랑 큰 차이를 못느끼겠다. 왜냐.. 바로 대부분의 프로그램이 싱글코어 기준의 프로그램이기 때문이다. 듀얼코어를 효과적으로 사용하려면 멀티코어 기준으로 프로그램이 되어있어야 하겠다. 즉, 코어가 여러개이기때문에 병렬처리를 해야 진정한 멀티코어에 맞는 프로그램이라 할 수 있겠다. 그럼, 멀티코어 프로그래밍을 하기위해서 어떻게 해야하는가.. 아래 동영상을 보자. 프로그램 내에 병렬처리를 가능케 하기 위해 어떻게 해야 하는가? 병렬 처리의 도입을 처음 고려할 때 가장 피해야 할 것은, 병렬 처리에 있어서 가장 낮은 단계의 프로그래밍 모델을..
#pragma once의 의미 #pragma는 컴파일러에 종속적인 명령으로 컴파일러를 변경했을 경우 실행을 보장 할 수 없다 #pragma once 컴파일러에게 해당 헤더 파일이 한번만 빌드되도록 한다. 해당 헤더파일이 여러번 include 되는 것을 막아준다. 여러곳에서 include 되면 그때마가 각각 정의가 추가되어 중첩되는 경우가 생기기 때문이다. 즉 중복된 내용이 여러번 빌드되는 것을 막기 위해 #pragma once를 사용한다 이와 동일한 기능으로 #ifndef 문을 사용 할 수 있다. #ifndef _A #define _A //h file #endif 음.. 매번 보고도 지나쳤던 코드
Windows에서 최대한 Realtime을 지켜보자 Windows는 실시간 OS가 아니기 때문에 근본적으로 실시간은 지켜질수 없다. 그러나 여러 방법을 사용하면 가능할 수도 있다. 방법으론 다음과 같이 크게 3가지가 있을수 있다. 1. RTC(RealTime Clock) 인터럽트를 이용하는 방법 2. 실시간을 위한 윈도우 써드파트를 이용하는 방법 3. 윈도우의 scheduling과 Process Class./Thread Priority를 이용하는 방법 1번은 DDK로 IRQ8번을 후킹하여 RTC가 갖고있는 Period Interrupt기능을 이용할 수 있다. 이를 위해서는 디바이스 드라이버 프로그래밍을 할 줄 알아야 하는 번거로움이 있고 IDT(INterrupt Descriptor Table)을 직접 조작할수 있는 기술이나 다른 사람이 짠 프로그램을 빼끼..