일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- paper2d
- UE4
- flex하는게 아니었는데..
- weblogic
- JPA
- 삼성 플렉스북
- spring
- @JsonView
- spring security
- AT&T
- 학생비자
- 필라델피아
- HRD
- 최근증시
- mastering unreal engine
- kospi
- jdk17
- spring message converters
- rollbackOnly
- 어학연수
- mysql
- 증시
- 월화수목금토익
- 주식
- java
- 펜실베이니아
- 인물
- ue5
- 금융공학
- 유학
Archives
- Today
- Total
HeBhy, since 1983.
[VC] 트리뷰 드래그앤 드랍 처리하기 (treeview drag & drop) 본문
데브피아 어느분이 올리셨던 소스를 조금 손봤는데 거의 동일합니다.
다만, goto를 없앤거, 이미지처리 및 클래스 상속없이 헤더파일만 포함하면
어떤 다이얼로그에서도 동일한 처리가 가능하도록 했습니다. 편의성 위주죠..
사용하고자 하는 dlg cpp 파일에 CTV.h 를 인클루드 하시고, 다이얼로그에서 TVN_BEGINDRAG 메세지 추가해주시고 안에 다음처럼 집어넣으시면 됩니다. (예제 - m_TreeMesh 는 CTreeCtrl의 컨트롤 변수입니다)
이해안되시는것 있으면 댓글 달아주세요 ^^
void CDlgTabMesh::OnTvnBegindragTreeMesh(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
HTREEITEM hDragItem = pNMTreeView->itemNew.hItem;
HTREEITEM hDropTargetItem = CTV::DragItem(&m_TreeMesh, hDragItem, pNMTreeView->ptDrag);
if(hDropTargetItem != NULL) {
HTREEITEM hItem = CTV::CopyItem(&m_TreeMesh, hDragItem, hDropTargetItem); // 복사. 차일드까지.
if(hItem != NULL) {
m_TreeMesh.SelectItem(hItem); // 새 아이템 선택
CTV::DeleteItem(&m_TreeMesh, hDragItem); // 기존것 삭제.(차일드까지)
}
}
*pResult = 0;
}
아래는 CTV.h 소스입니다. 선언부.
#pragma once
#include "resource.h"
#include "afxcmn.h"
#include "afxwin.h"
#define ID_TIMER_AUTOEXPAND 1000 // 오토 익스팬드를 위한 타이머 ID이자 시간
#define ID_TIMER_AUTOSCROLL 50 // 오토 스크롤을 위한 타이머 ID이자 시간
typedef class CTV {
public:
static HTREEITEM DragItem(CTreeCtrl* pTree, HTREEITEM hDragItem, CPoint point);
static HTREEITEM CopyItem(CTreeCtrl* pTree, HTREEITEM hSrc, HTREEITEM hDestParent = TVI_ROOT, HTREEITEM hCopyAfter = TVI_LAST);
static void DeleteItem(CTreeCtrl* pTree, HTREEITEM hItem);
} *PCTV, **LPCTV;
아래는 CTV.cpp 입니다. 정의부.
'Dev > Dev basics' 카테고리의 다른 글
'd3d10sdklayers.dll' 이 현재 다른프로그램에서 사용중입니다 - 문제 (0) | 2010.03.08 |
---|---|
DX9 plugin file for ZTP map (using EFB to Texture) (2) | 2009.12.20 |
[Win32Api] Modal Window (not a Modal Dialog) 를 띄우고 싶을 때 (0) | 2009.06.22 |
MATLAB (Analog - Digital) (0) | 2008.10.08 |
WIN32API - 각종 프로그래밍 팁 (0) | 2008.08.09 |