수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1620949
  • Today | 329
  • Yesterday | 482

1 Articles, Search for '객체 삽입'

  1. 2007/03/01 '객체 삽입' 상자 없이 객체 삽입하기
Programming/MFC2007/03/01 18:52

'객체 삽입' 상자 없이 객체 삽입하기

원본 : http://www.debuglab.com/knowledge/oleinsert.html

1.요약

MFC OLE Client 로 OLE Container 나 OLE 서버 프로그램을 만들때에는 일반 워드 패드에서와는 달리 '객체 삽입' 상자없이 객체를 삽입할 수 있어야 합니다.


2.본문

기본적으로 MFC AppWizard로 프로그램을 작성하면, MFC 는 OLE 객체를 삽입할때 COleInsertDialog 를 클래스를 사용합니다. 또한 실제로 객체를 삽입할때는 CreateItem() 라는 함수를 호출하는데, 이 함수의 core 소스를 살펴보시면, 프로그램적으로 객체를 삽입하는 방법에 대해서 알 수 있습니다. 아래의 소스를 보시면 아시겠지만, 객체를 관리해 주는 OLE Class 가 이미 MFC 에서 제공되고 있는데(COleClientItem) 이 클래스에 보면 객체 삽입과 관련된 수많은 작업들(예, 파일로 부터 삽입, 새로운 객체 삽입, 객체 Link 등..)을 해주는 함수들이 제공되고 있습니다. 샘플 코드가 제공되고 있는데, 간단합니다.


3.예제

// COleInsertDialog::CreateItem() 함수의 핵심 루틴 



//*******Begin Excerpt******* 

switch (selType) 

{ 

case linkToFile: 

    // link to file selected 

    ASSERT(m_szFileName[0] != 0); 

    bResult=pNewItem->CreateLinkFromFile(m_szFileName); 

    break; 

    

case insertFromFile: 

    // insert file selected 

    ASSERT(m_szFileName[0] != 0); 

    bResult=pNewItem->CreateFromFile(m_szFileName); 

    break; 

    

default: 

    // otherwise must be create new 

    ASSERT(selType == createNewItem); 

    bResult=pNewItem->CreateNewItem(m_io.clsid); 

    break; 

} 



//*******End Excerpt******* 





///////////////////////////////// 





///////////////////////////////// 

// Sample Code 

///////////////////////////////// 

// Compile options needed : None 





void CMyView::OnInsertObject() 

{ 

    

    BeginWaitCursor(); 

    

    CMyOleClientItem* pItem = NULL; 

    TRY 

    { 

        // Create new item connected to this document. 

        CMyDoc* pDoc = GetDocument(); 

        ASSERT_VALID(pDoc); 

        pItem = new CMyOleClientItem(pDoc); 

        ASSERT_VALID(pItem); 

        

        // Get Class ID for Excel sheet 

        // This is used in creation 

        CLSID clsid; 

        if(FAILED(::CLSIDFromProgID("Excel.Sheet",&clsid))) 

            AfxThrowMemoryException(); 

        

        // Create the Excel embedded item 

        if(!pItem->CreateNewItem(clsid)) 

            AfxThrowMemoryException();  // any exception will do 

        ASSERT_VALID(pItem); 

        

        // Launch the server to edit the item. 

        pItem->DoVerb(OLEIVERB_SHOW, this); 

        

        ASSERT_VALID(pItem); 

        

        // As an arbitrary user interface design, this sets the 

        // selection to the last item inserted. 

        

        // TODO: reimplement selection as appropriate for your 

        // application 

        

        m_pSelection = pItem;   // set selection to last inserted item 

        pDoc->UpdateAllViews(NULL); 

    } 

    CATCH(CException, e) 

    { 

        if (pItem != NULL) 

        { 

            ASSERT_VALID(pItem); 

            pItem->Delete(); 

        } 

        AfxMessageBox(IDP_FAILED_TO_CREATE); 

    } 

    END_CATCH 

        

        EndWaitCursor(); 

} 

4.참고

MSND : Q137357

[주의] 위의 소스 코드 중에서 ::CLSIDFromProgID() 함수의 첫번째 인자를 LPCSTR 로 사용하고 있는데, 이 부분은 A2COLE() 라는 매크로로 형변환을 해주어야 정상적으로 CLSID 를 얻어옵니다.

예)


USES_CONVERSION; // 형변환 매크로 사용 



if(FAILED(::CLSIDFromProgID(A2COLE("MPlayer"),&clsid))) 

    AfxThrowMemoryException(); 



- 2001.08.13 Smile Seo -

"MFC" 카테고리의 다른 글
  • 현재 실행되고 있는 자신의 경로와 파일명 가져오기 (0)2007/03/01
  • Dialog Based 프로그램에서 가속키 기능 넣기 (0)2007/03/01
  • '객체 삽입' 상자 없이 객체 삽입하기 (0)2007/03/01
  • Registry에 File Icon등록해주기 (0)2007/03/01
  • 특정 Registry Key안의 Value값 가져오기 (0)2007/03/01
2007/03/01 18:52 2007/03/01 18:52
Posted by webdizen
Tags 객체 삽입
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2659

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1  Next»

RSS HanRSS
Blog Image
webdizen
이 곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (2998)
Webdizen (134)
Life (6)
Diary (16)
Blog (9)
IDEA (1)
Travel (10)
Book (14)
Photo (7)
Movie (7)
Music (13)
Leisure Sports (10)
Funny (5)
Hardware (119)
Software (120)
Windows (5)
Unix & Linux (119)
Installation (4)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (805)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (3)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (3)
Network (66)
Web (78)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 구글수표
  • TaskBar
  • CAB
  • Cartesian 곱
  • 비트맵 파일
  • 누리캅
  • system call
  • Delayload
  • fgrep
  • delete
  • Source
  • WinDbg
  • 자석 윈도우
  • 네트워크 라우터
  • Ubuntu
  • GDB
  • 바르셀로나
  • Registry Key
  • XMLParser
  • 윈도우 모바일 7.0

Recent Articles

  • ASCII Code의 CRLF 제거 방법.
  • Hadoop 에서 c++ API 이용시....
  • Ubuntu Linux에서 Hadoop 구....
  • 내 심장을 한껏 뛰게한 "국가....
  • 스타 스키마 데이터베이스 설....

Recent Comments

  • ■ 온라인카지노 ▶ http://L....
    asdf 11/21
  • 그리고 혹시 해외여행자보험....
    kim 11/05
  • ★★실제 바다게임장과 똑같....
    asdf 11/04
  • sbsyama.co.to← 짱5000만당....
    asdf 11/04
  • ♡KicaZ??o(???) 바카라사....
    fdsf3fass 11/03

Recent Trackbacks

  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 02/11
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007
  • 마방진을 구하는 프로그램.
    Oranzie's BLOG 3 2007

Archive

  • 2009/09 (3)
  • 2009/08 (1)
  • 2009/03 (1)
  • 2009/02 (9)
  • 2009/01 (13)

Calendar

«   2009/11   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.