C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[53422] Re:Re:트리뷰의 DragOver 메세지 호출방법(?)
해바라기 [allyhejo] 1200 읽음    2008-05-15 23:11
장성호님께서 답변해주신대로 구현을 하였습니다.

일단 DragOver 함수에 진입하기에는 성공했는데요..

void  __fastcall CVTV_GroupTree::VTV_GroupTreeDragOver(TBaseVirtualTree *Sender, TObject *Source, TShiftState Shift,
    TDragState State, const TPoint &Pt, TDropMode Mode, int &Effect, bool &Accept)
{
/* ... 중략 ... */

    if (nSelLevel != 0 && m_DragSrcNodeParent != Node && m_DragSrcNodeParent != Node->Parent)
    {
              Accept = true;
              //Effect = crDrag;
    }
}

Accept 의 값이 true인데도 드래그앤드랍이 허용이 되질 않네요..
SendMessage를 하지 않고 정상적으로 DragOver 함수가 호출되어었을 경우엔 이상없이 잘 돌아 가는데요..
답변부탁드립니다 (^^;;)





장성호 님이 쓰신 글 :
: VirtualTreeView1->BeginDrag(true,0);
: 위와같이 코딩하고 마우스가 VirtualTreeView 위에 올라가면 dragover이벤트가 뜰것입니다.
:
: 그런데 마우스가 VirtualTreeView위에 있지 않으면서 VirtualTreeView에서 dragover이벤트가 뜨게 하려면
:
: CM_DRAG 메세지를  VirtualTreeView에 날리면 되는데 아래 예제를 참조하세요
:
: 예제는
: Button1을 클릭했을때 Memo1이 drag모드로 들어가게 했구요
: Button2를 클릭하면   1회성으로 Memo1에서 DragOver 이벤트가 발생하도록 했습니다.
:
: void __fastcall TForm1::Memo1DragOver(TObject *Sender, TObject *Source,
:       int X, int Y, TDragState State, bool &Accept)
: {
:     Memo1->Lines->Add("Memo1DragOver");
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:     Memo1->Lines->Clear();
:     Memo1->BeginDrag(true,1);
: }
: //---------------------------------------------------------------------------
: Longint MyDragMessage(HWND Handle,TDragMessage Msg,TDragObject  *Source,void * Target, const TPoint Pos)
: {
:   TDragRec DragRec;
:   Longint Result=0;
:   if( Handle )
:   {
:     DragRec.Pos = Pos;
:     DragRec.Target = Target;
:     DragRec.Source = Source;
:     DragRec.Docking= false;
:     Result = SendMessage(Handle, CM_DRAG, Longint(Msg), Longint(&DragRec));
:   }
: }
:
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
:     // TDragMessage = (dmDragEnter, dmDragLeave, dmDragMove, dmDragDrop, dmDragCancel, dmFindTarget);
:     TPoint pt;
:     pt.x=Mouse->CursorPos.x;
:     pt.y=Mouse->CursorPos.y;
:     MyDragMessage(Memo1->Handle,dmDragMove,(TDragObject *)Memo1,Memo1,pt);
:
: }
: //---------------------------------------------------------------------------
:
:
: 그럼..
:
:
:
: 해바라기 님이 쓰신 글 :
: : 메인 윈도우에서 마우스무브 상태를 감지한후, 특정 조건이 맞을때 트리뷰(VirtualTree View)로
: :
: : 드래그오버 메세지를 발생시켜 주고 싶은데.. 어떻게 방법이 없을까요..?;;

+ -

관련 글 리스트
53417 트리뷰의 DragOver 메세지 호출방법(?) 해바라기 1252 2008/05/15
53418     Re:트리뷰의 DragOver 메세지 호출방법(?) 장성호 1444 2008/05/15
53422         Re:Re:트리뷰의 DragOver 메세지 호출방법(?) 해바라기 1200 2008/05/15
53425             Re:Re:Re:트리뷰의 DragOver 메세지 호출방법(?) 장성호 1349 2008/05/16
53429                 Re:Re:Re:Re:트리뷰의 DragOver 메세지 호출방법(?) 해바라기 1279 2008/05/16
53434                     Re:Re:Re:Re:Re:트리뷰의 DragOver 메세지 호출방법(?) 장성호 1683 2008/05/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.