메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

론(Ron)의 비주얼 베이직 포럼

한빛미디어

|

2001-03-22

|

by HANBIT

8,177

활성화된 윈도우의 ProgID : 현재 활성화되어 있는 윈도우의 ProgID를 알 수 있는 방법이 있는가? 활성 윈도우에서 ProgID(programmatic identifier)를 결정할 수 있는 방법은 없다. 그 이유를 이해하려면, ProgID(programmatic identifier)가 상징하는 것이 무엇인지를 먼저 명확히 해야 한다. 그것은 외부적으로 창조 가능한 객체의 문자열 식별자이다. 즉, 그것은 외부 애플리케이션에서 생성될 수 있고, 외부 애플리케이션에 속해있는 어떤 드러난 객체를 식별하여 준다. 만약 비주얼 베이직에서 이른 바인딩(early binding)을 사용하고 있다면(다시 말해서 특정한 객체 모델에 대한 레퍼런스를 VB 프로젝트에 덧붙였다면), ProgID가 있는 객체는 일반적으로 새로운 객체를 예시하기 위해 새로운 키워드를 사용하는 것을 허용하는 클래스에 응답한다. 요약하자면, ProgID는 어떤 객체 모델에 객체 모델로의 "엔트리 지점"을 제공한다. 이 정의는, 현재 활성화되어 있는 윈도우의 ProgID를 얻는 일이 마치 사과와 오렌지를 섞는 것과 같다는 것을 암시한다. 즉, 윈도우와 ProgID 사이의 응답이 꼭 있는 것은 아니라는 말이다. 게다가, 윈도우는 애플리케이션의 사용자 인터페이스와 문서나 데이터의 모음을 담기 위한 일종의 그릇을 의미한다. 그것은 적어도 대부분의 객체 모델에서는 그렇게 보인다. 윈도우는 애플리케이션에 의해 내부적으로 생성되고, 외부에서 예제를 들기 위해 새로운 윈도우 객체를 허용하는 것은 이치에 닿지 않는다. Word 객체 모델이 그 좋은 예이다. 비록 대부분의 다른 오피스 객체 모델은 비슷하지만 말이다. 모델 안에 있는 두 가지의 주된 창조 가능한 객체들은 애플리케이션 객체와 문서 객체이다. 워드에서, 윈도우들은 문서를 담는 그릇이다. 그래서 만약 당신이 워드 윈도우에 레퍼런스를 불러오기를 원한다면, 당신은 먼저 워드 애플리케이션 객체를 예시하고, 새로운 문서를 문서 콜렉션의 애드 메쏘드를 이용하거나 현재 존재하는 문서를 오픈 메쏘드 문서 콜렉션을 이용하여 열어야 할 것이다. 당신은 그 다음에 레퍼런스를 윈도우 특정 문서의 윈도우 객체에 불러올 수 있다. 예를 들자면 다음과 같다. Dim oWord As Word.Application Dim oDoc As Word.Document Dim oWin As Word.Window Set oWord = New Word.Application oWord.Visible = True " create new document Set oDoc = oWord.Documents.Add() Set oWin = oDoc.Windows(1) 아니면 새로운 문서를 만들려고 할 때, 그 문서는 자동적으로 Word를 띄울 것이다. Dim oDoc As Word.Document Dim oWin As Word.Window Set oDoc = New Word.Document Set oWin = oDoc.Windows(1) oDoc.Application.Visible = True 둘 중에 어떤 경우에서든지, 어떤 윈도우가 그릇으로서의 역할을 할 지에 대한 윈도우 객체에의 레퍼런스는 문서 객체로부터 획득된다. 윈도우와 ProgID에 대해 마지막으로 논의하자면, 당신은 워드 윈도우 객체를 완전히 자격을 갖춘 Word.Window를 사용하여 예를 들 수 있기 때문에, 당신은 이것이 워드 윈도우 객체의 ProgID라고 생각할 지도 모른다. 하지만, 사실은 그렇지 않다. ProgID는 리지스트리에서 HKEY_CLASSES_ROOT의 직접적인 하위 키로 정의된다. 당신이 리지스트리에서 Word.Windows라는 이름의 하위 키를 찾으려 해도, 발견할 수 없을 것이다. 그 스트링은 단지 (Window와 같은) 특정한 클래스에 속한 (Word와 같은) 특정한 타입의 라이브러리를 지정해준다.
TAG :
댓글 입력
자료실

최근 본 책0