수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1693891
  • Today | 242
  • Yesterday | 588

Programming/MFC2007/03/23 16:53

OLE를 이용한 Drag and Drop

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

1. 요약

Ole를 이용하여 간단하게 Window 사이에서 Drag and Drop하여 데이터를 교환하는 방법을 설명합니다.


2. 본문

기본적으로 Ole Drag and Drop를 사용하기 위해서 COleDataSource와 COleDropTarget를 사용하고, 이 두 클래스는 "AfxOle.h"를 Include 해주어야 사용할 수 있습니다.

COleDataSource는 Drag를 시작하는 Window에서 정의해 주어야 하고,
COleDropTarget은 Drop이 이루지는 Window에서 정의해 주어야 한다.
CMy1View라는 곳에서 데이터를 드래그 하기위해서는 COleDataSource를 다음과 같이 사용한다.

COleDataSource m_OleDataSource;  // CMy1View 의 멤버 변수로 선언 



void CMy1View::OnMouseMove(UINT nFlags, CPoint point) 

{ 

    

    // 전달하길 원하는 데이터를 변수에 입력하는 작업을 해준다. 

    

    DROPEFFECT dropEffect = m_COleDataSource.DoDragDrop   

        (DROPEFFECT_COPY|DROPEFFECT_MOVE,NULL); 

    

    CMy1View::OnMouseMove(nFlags, point); 

} 

CMy2View라는 곳에서 드래그 된 데이터를 받기 위해서는 COleDropTarget 클래스를 다음과 같이 사용한다.

COleDropTarget m_OleDropTarget;   // CMy2View 의 멤버 변수로 선언 



// OnInitalUpdate에서 초기화를 해준다. 

void CTargetView::OnInitialUpdate() 

{ 

    CFormView::OnInitialUpdate(); 

    

    m_OleDropTarget.Register(this);  // Drag and Drop 를 위해 초기화 

} 



// 다음과 같은 Virtual함수를 재정의 해준다. 

virtual BOOL OnDrop(COleDataObject* pDataObject, DROPEFFECT   

                    dropEffect, CPoint point); 

virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject, 

                               DWORD dwKeyState, CPoint point); 

virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject, 

                              DWORD dwKeyState, CPoint point); 



//Drag된 파일을 받는다. 

BOOL CAcsProjectView::OnDrop(COleDataObject* pDataObject,   

                             DROPEFFECT dropEffect, CPoint point) 

{ 

    // 여기서 Drop된 데이터를 처리해준다. 

    return CScrollView::OnDrop(pDataObject, dropEffect, point); 

} 



// 드래그되는 파일이 View안에 들어 왔을 경우 의 처리 

DROPEFFECT CAcsProjectView::OnDragEnter(COleDataObject* DataObject, 

                                        DWORD dwKeyState, CPoint point) 

{ 

    return DROPEFFECT_COPY; // 이 값을 반환해 주면 마우스 모양이 (+) 

    // 형태로 바뀌게 된다. 

} 





// 드래그되어 들어왔던 파일이 Drop작업이 이루지지 않고 다시 View를 빠져나가게 될경우 

DROPEFFECT CAcsProjectView::OnDragOver(COleDataObject* pDataObject, 

                                       DWORD dwKeyState, CPoint point) 

{ 

    return DROPEFFECT_COPY;  // 이 값을 리턴하게 되면 View를 빠져나 

    //간 후 마우스 모양이 적절한 형태로 

    //다시  바뀌게 된다.   

} 


3. 예제코드



4. 참조

데이터를 전달할 때 다른 Application Window에도 데이터를 전달해야 할 경우 COleDropSource클래스를 사용해야하는데 저도 아직 여기 까지는 사용해보지 않아서, 예제에서는 같은 Applicatopn에서 데이터를 Drag and Drop하기 위해 데이터를 저장하기 위한 CString 객체를 CMyApp에 선언하여 사용하였습니다.



- 2001.08.19 Smile Seo -
"MFC" 카테고리의 다른 글
  • Child윈도를 Popup시키는 방법 (0)2007/03/23
  • 향상된 RichEdit control (RICHEDIT20A) (0)2007/03/23
  • OLE를 이용한 Drag and Drop (0)2007/03/23
  • TLS(Thread Local Storage) (0)2007/03/23
  • DECLARE_DYNCREATE()와 IMPLEMENT_DYNCREATE() (0)2007/03/22
2007/03/23 16:53 2007/03/23 16:53
Posted by webdizen
No Trackback No Comment

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

Leave your greetings.

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

«Prev  1 ... 514 515 516 517 518 519 520 521 522 ... 3009  Next»

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

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
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 (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
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

  • 패스포드
  • 마주앙 미셀
  • 처리속도
  • Password
  • 이질 복잡 데이터
  • 컴파일러 옵션
  • 화면 캡처
  • SARG
  • Desktop
  • Thread Pooling
  • ATOM
  • 스노우보드
  • 컴퓨터과학과
  • Photography
  • 프린트 다이얼로그
  • 실체화
  • Profile
  • OLE DB
  • GPMC 2.0
  • Oracle

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  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 31      

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.