<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=MFC%2FObjectLinkingEmbedding</id>
	<title>MFC/ObjectLinkingEmbedding - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=MFC%2FObjectLinkingEmbedding"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=MFC/ObjectLinkingEmbedding&amp;action=history"/>
	<updated>2026-05-14T14:57:13Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=MFC/ObjectLinkingEmbedding&amp;diff=84623&amp;oldid=prev</id>
		<title>Maintenance script: Repair batch-0002 pages from live compare</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=MFC/ObjectLinkingEmbedding&amp;diff=84623&amp;oldid=prev"/>
		<updated>2026-03-27T00:16:07Z</updated>

		<summary type="html">&lt;p&gt;Repair batch-0002 pages from live compare&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:16, 27 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l78&quot;&gt;Line 78:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 78:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[MFC]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[MFC]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=MFC/ObjectLinkingEmbedding&amp;diff=34425&amp;oldid=prev</id>
		<title>imported&gt;qa22ahj at 08:21, 13 January 2014</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=MFC/ObjectLinkingEmbedding&amp;diff=34425&amp;oldid=prev"/>
		<updated>2014-01-13T08:21:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;#define _MFC_&lt;br /&gt;
__TOC__&lt;br /&gt;
= OLE? =&lt;br /&gt;
서로 다른 응용프로그램들이 프로그램 안에 있는 데이터를 편집할 수 있도록 하는 프록램을 작성할수 있도록 하는 메카니즘이다. (예를 들자면 오피스웨어에서 포토ㅤㅅㅑㅍ에서 수정하던 그림을 특정 포맷으로 변환하지 않고 바로 붙이기 하는 경우와 같은 경우....)&lt;br /&gt;
&lt;br /&gt;
이렇게 다른 프로그램이 자신이 짠 프로그램에서 마치 자신의 프로그램의 데이터인 것 처럼 다루어지지만, 사실은 다른 프로그램이 그 데이터를 다루는 것 일 뿐이다.&lt;br /&gt;
&lt;br /&gt;
외부의 데이터를 다루는 방식은 2가지이다. &lt;br /&gt;
외부 객체를 현재 프로그램에 대한 도큐먼트의 부분으로서 저장하지 않고, 다른 프로그램에서의 레퍼런스로만 저장시키는 방식, 두번째로는 다른 프로그램의 도큐먼트를 자신의 프로그램에 엠베딩 시켜서 내부에 아예 포함해버리는 방식. 이렇게 2가지가 있을 수 있다.&lt;br /&gt;
&lt;br /&gt;
= 컨테이너와 서버 =&lt;br /&gt;
컨테이너 : 임베드된 객체를 처리할 수 있는 프로그램을 OLE 컨테이너라고 부른다.&lt;br /&gt;
OLE서버  : 서버는 컨테이너에 들어갈 객체를 생성한다. 풀서버는 독립적인 프로그램으로 작동할 수 있거나, 복합 도큐먼트 안에 임베드된 객체로 작동한다. 미니서버는 standalone 모드로서 작동하지 못한다. 오로지 객체를 만들기만 할 뿐이다.&lt;br /&gt;
&lt;br /&gt;
= 작동하는 방식 =&lt;br /&gt;
OLE 컨테이너, 서버 사이의 통신은 윈도우 운영체제를 매개로 동작한다. 각 OLE 를 지원하는 프로그램은 공통의 OLE DLL을 가지는데 이 것이 윈도우의 기본지원 부분이다. DLL 안의 함수들은 이렇게 객체사이의 통신을 지원한다. 이때 이를 지원하는 표준적인 인터페이스가 COM(Component Object Model)이다. 본질적으로 엠비드된 객체의 모양과 컨테이너가 그것과 통신하는 방법을 정의한것이다.&lt;br /&gt;
&lt;br /&gt;
= OLE COM =&lt;br /&gt;
OLE 서버와 같은 COM객체는 IUnknown 이라는 인터페이스를 구현하고 있따. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| QueryInterface()&lt;br /&gt;
| 특정한 인터페이스가 객체에 의해 지원되는지를 검사. 지원된다면 포인터가 리턴된다.&lt;br /&gt;
|-&lt;br /&gt;
| AddRef()&lt;br /&gt;
| 인터페이스를 사용하는 클라이언트의 개수에 대한 카운터를 증가시킨다.&lt;br /&gt;
|-&lt;br /&gt;
| Release()&lt;br /&gt;
| 인터페이스를 사용하는 클라이언트의 개수에 대한 카운터를 감소시킨다. 카운터가 0이되면 더이상 사용되지 않으므로 메모리에서 해제될 수 있다.&lt;br /&gt;
|}&lt;br /&gt;
이외에도 다른 인터페이스들도 있다. 인터페이스의 이름은 I로 시작하는 것이 원칙이다. 또한 프로그래머가 자신만의 커스텀 인터페이&lt;br /&gt;
스를 만들어서 사용하는 것도 가능하다.&lt;br /&gt;
&lt;br /&gt;
= Registry =&lt;br /&gt;
OLE서버를 어떤 방식으로 식별할 것인가? OLE객체는 문서, 프로그램등 OLE를 지원하는 어떤 프로그램도 될 수 있다. 시스템에 있는 각각의 OLE객체는 클래스 ID 또는 CLSID라고 부르는 128비트의 숫자로 식별한다. 이들은 GUID라고도 불리우며 알고리즘을 통해서 생성되기 때문에 모두 독특한 값을 지니게된다. 이러한 정보는 윈도우 시스템의 레지스트리에 저장되게 된다.&lt;br /&gt;
&lt;br /&gt;
= MFC의 OLE 지원 객체들 =&lt;br /&gt;
CDocument -&amp;gt; COleDocument -&amp;gt; COleLinkingDoc -&amp;gt; COleServerDoc&lt;br /&gt;
 == OLE 객체 클래스 ==&lt;br /&gt;
 CDocItem 에서 파생되는 2개의 클래스 COleClientItem, COleServerItem 은 각각 컨테이너와 서버의 관점에 해당하는 OLE객체를 나타낸다. &lt;br /&gt;
 === 컨테이너에 임베드된 객체 ===&lt;br /&gt;
 COleClientItem 에는 엠베드된 항목의 관리를 위해 컨테이너가 필요로하는 인터페이스들이 존재한다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| OnChange()&lt;br /&gt;
| 임베드된 객체에 변경사항이 존재하면 그 항목의 서버에 보고될 때 프레임웍에 의해 호출된다. 일반적인 경우는 임베드된 객체를 다시 그릴때이다.&lt;br /&gt;
|-&lt;br /&gt;
| OnGetItemPosition()&lt;br /&gt;
| OLE객체가 표시되어야 하는 컨테이너의 클라이언트 영역의 직사각형을 얻기 위해 프레임웍에 의해 호출&lt;br /&gt;
|-&lt;br /&gt;
| OnChangeItemPosition()&lt;br /&gt;
| 엠베드된 객체의 범위가 편집 작업 동안 변경되었다는 것을 컨테이너에 알리기 위해 프레임웍에 의해 호출&lt;br /&gt;
|-&lt;br /&gt;
| Serialize()&lt;br /&gt;
| 컨테이너 안에 추가된 객체를 직렬화 하는데 필요함&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 ==  서버안에 있는 엠베드된 객체 ==&lt;br /&gt;
 COleServerItem 안에서 서버를 지원하는 인터페이스도 많은 함수를 갖는다.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| OnDraw()&lt;br /&gt;
| 객체가 in-place 활성화 되었을때 서버에 있는 뷰클래스의 OnDraw() 함수에 의해서 그려진다. 따라서 컨테이너에 잇는 요소를 그리는 일은 서버측에서 구현되어야 하는 것이다.&lt;br /&gt;
|-&lt;br /&gt;
| Serialize()&lt;br /&gt;
| 컨테이너의 요청을 받고 객체를 직렬화하는 것임.&lt;br /&gt;
|-&lt;br /&gt;
| OnGetExtent()&lt;br /&gt;
| 임베드된 객체의 실제 범위를 얻기 위해 프레임웍에 의해 호출되는 부분이다.&lt;br /&gt;
|-&lt;br /&gt;
| NotifyChanged()&lt;br /&gt;
| 서버에서 객체가 변경되면, 이 객체를 임베드 하고 있는 모든 컨테이너에게 이를 알려 컨테이너가 OnChanged()를 호출하도록 한다.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 == OLE 도큐먼트 클래스 ==&lt;br /&gt;
 컨테이너측에는 COleDocument, COleLinkingDoc 이 존재한다. 전자의 경우는 in-place 활성화를 지원하며, 후자는 링크방식을 지원한다.&lt;br /&gt;
 서버측에는 COleServerDoc에서 파생된 도큐먼트를 이용한다. 서버측에서는 반드시 OnGetEmbeddedItem() 멤버를 구현해야한다. 이는 이 함수가 순수가상 함수이기 때문이다.&lt;br /&gt;
----&lt;br /&gt;
[[MFC]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;qa22ahj</name></author>
	</entry>
</feed>