반응형

전편에서 finish를 누르고 나면 다음과 같은 클래뷰를 볼수 있다.

사용자 삽입 이미지

여기서 굉장히 낯선 고리에 선이 붙은 모양을 볼수 있다. 전편에서 설명한 두가지 방법으로 OCX또는 COM을 만들때 당신은 저 낯선고리를 볼수 있으며 저 고리와 친해져야 한다. 저 고리가 의미하는 것은 인터페이스이다. 결국 프로젝트 마법사에 의해 생성되는 이벤트는 두가지로써 _DTempOcx 과 _DTempOcxEvents이다.. 앞의 것은 클라이언트가 이 OCX에게 하는 명령이며, 두번쨰는 이 OCX에 어떤 이벤트가 발생했을때 클라이언트에게 알려주는 Callback을 위한 인터페이스이다.
 
당신이 하고 싶은것은 "Hello World"를 띄우는 것이다. 외부에서 이 OCX의 함수를 호출하기 위해 함수를 하나 만들자.
 
 클래스뷰에서...._DTempOcx위에서 마우스 오른쪽을 클릭하면 AddMethod가 있다. 그걸 선택하면 당신은 다음과 같은 창을 볼수 있다.
 
사용자 삽입 이미지
 
글자는 내가 채운것이다. 당신도 같게 채워라... External name은 외부에서 이 OCX를 사용할때의 이름이고, Internal name 우리가 작업하는 이 OCX안에서 그 함수를 부르는 이름이다. 밑에 파라미터에는 당신이 원하는 파라미터를 넣을수 있다.
 
그러고 나면 당신은 클래스 뷰에서 열쇠모양의 인터페이스에 함수가 추가되고, CTempOcxCtrl클래스에도 역시 같은 이름의 함수가 추가되는 것을 볼수 있다.....
 
이전 강좌를 보았다면 당신은 기억하는가, 인터페이스는 가상함수라서 구현부분이 없다고, 그래서 이 인터페이스는 구현부가 필요하다. 그 구현부가 CTempOcxCtrl안에 있는것이다. 당신은 이제 CTempOcxCtrl클래스의 PrintHello함수안에다가 다음과 같이 코딩하면 된다.
 
void CTempOcxCtrl::PrintHello()
{
        AfxMessageBox("Hello World");
}
그리고 컴파일을 하는 순간.... 당신은  TempOcx.Ocx를 얻을수 있다.
 
이 OCX를 사용하는 방법은 일반적인 OCX사용법과 같다. 혹시 사용하는 방법을 모른다면......
 
음.... 어찌해야 하나.... 이건 일반적인 VC++책에 있다... 대표적인 OCX로 MSFlexGrid가 있는데, 어느 VC++책에나 사용하는 방법이 있으며, 또한 거의 모든VB책에도 OCX를 사용하는 방법이 나와있다.... 그건 그걸 참고해라.....
 
OCX를 사용하는 방법도 모르면서 OCX를 만든다고 덤비지는 않았을거라 생각한다.
 
그것보다두.... 중요한건.... 이 OCX를 만들때의 유의점이다.....
 
일단 파일뷰에서... 확장자가 ,Odl인 파일을 볼수 있다....
 
이 부분은 인터페이스를 명시하는 부분이다. 인터페이스 기반의 프로그램을 위해서 IDL이라는 언어가 있다. IDL(Interface Definition Language)는 국제 표준으로써.... COM은 당근 이걸 사용하며, 비슷한 종류의 다른 기술인 Corba역시 IDL을 사용한다. 그럼 ODL은 뭐냐?
 
MS애들이 좀더 편하게 IDL을 사용하도록 만들어놓은 언어라구 생각하면 된다.(내 생각에는 절대 편하지 않다.) 당신은 지금 ATL/COM을 사용하고 있으며, 반드시 당신은 IDL언어에 대해서도 이해해야 할것이다. (정말 안어렵다. SQL도 언어인것을 기억하는가? SQL보다 분명히 쉽다.)
반응형

+ Recent posts