CRuntimeClass

Development/C / C++ 2006. 11. 20. 17:04
출처 : 검색 부분 발췌

헤더를 보면 다음과 같은 매크로가 있다.

   DECLARE_DYNCREATE(CMainFrame)

이것은 무엇인가?... 궁금하지 않은가?.. 바로 이것은.. RunTimeClass라는 구조체를 사용하겠다고 선언하는 것이다. 자세한 것은 솔직이 본인도 잘 모르지만.. 런타임 구조체라는게 어떤 것이라는 건 한번 되짚고 넘어가 볼 필요가 있다.

다음은 런타임 클래스의 정의를 설명해 놓은 원문이다.

CRuntimeClass does not have a base class.
Each class derived from CObject is associated with a CRuntimeClass structure that you can use to obtain information about an object or its base class at run time.

// 런타임 클래스 구조체는 기초 클래스가 없다.
CObject에서 파생된 각각의 클래스는 런타임 클래스와 연결되어 당신은 프로그램 실행시 (이하 실시간) 그때그때마다 오브젝트나 그것의 베이스 클래스에 대한 정보를 얻어낼 수 있다. //

이상이다. 이건 무슨 뜻일까?.. 프로그램이 실행될 때.. 탑다운 방식에서는 무조건 위에서 아래로 내려오면서 실행된다. 하지만 MFC는 적어도 그렇지 않다.
프로그램이 시작되면서 이벤트를 발생시키고 각각 그 이벤트의 정보가 다르다. 실시간마다.. 서로 다른 정보를 이쪽 저쪽으로 왔다갔다 하면서.. 설정한다는 말이다. 바로.. 프로그램이 긴박하게 돌아갈 때.. 우리가 발생시키는 메시지(이것 말고도 사실 실시간 중에는 많은 정보들이 왔다갔다 할 것이다. 하드웨어쪽으로 몰라서 뭐라고 자세히 설명드릴 수 없는 데 대해 사죄의 말씀을..--;)의 정보를 숨가쁘게 받아내야 할 것이고.. 런타임 에러에 걸리는지 안걸리는지... 실시간 에러처리까지 헤줘야 하는 것이다. 하드웨어에서 이처럼 그때그때 실시간 처리를 해주지 못한다면 그 프로그램의 실행은 불 보듯 뻔한거 아니겠는가.. 불.가.능..이겠다..

바로 런타임 구조체는 그런 면에서 유용하게 쓰인다. 나중에 Multi Document Interface를 공부하게 될 즈음.. View와 Document 그리고 Frame을 App에서 각각 실시간으로 어떻게 연결해주는지... 보게 될 것이다. 사실상... 런타임까지는 본인도 자세히 알지는 못하는 바다. MDI 만들 때 가끔씩 써보는 것 외엔..

이제 무슨 말인지 이해하셨을 것이다. 어쨌든.. 저 위의 한 줄.. 은 이러한 런타임 구조를 쓰겠다고 선언하는 것이다.


: