[CE] Windows Drag & Drop 방식

리눅스 CMD 프로그래밍만 하던 GUI 초보가
입사 초창기 해결하지 못한 문제에 대한 해법입니다. (역시 내공은 쌓여야 맛이죠!)

별것도 아닙니다만! 모르면 하기 힘든... 문제입니다.
내역은 아래와 같습니다.

------------------------------------- 아       래 --------------------------------------------

문제 : NONE 캡션 Window 에서 드래그 앤 드롭해서 Window를 이동할 때, 드래그 시에는 MoveWindow() 를 사용하지 않고 외곽선으로만 이동하고 드롭했을 때 1회에 대해서 MoveWindow() 해 줌
이유 : MoveWindow()는 시스템 자원을 너무 많이 소모하며, 드롭할 때만 MoveWindow() 했을 때 Window의 위치가 정확히 이동 되었는지 확인하기 어려움

두 가지만 안다면 해결됨
System Display DC와 함께 DrawDragRect() 사용하는 것으로 해결!

    CDC SystemDC;
    SystemDC.CreateDC(_T("DISPLAY"), NULL, NULL, NULL);
    SystemDC.Rectangle(100, 200, 180, 280);
    CRect rctCurr = CRect(0,0, RES_WIDTH, RES_HEIGHT);
    SystemDC.DrawDragRect(rctCurr, CSize(1, 1), m_rctOld, CSize(1, 1));
    SystemDC.DeleteDC();
    m_rctOld = rctCurr;

이상이요!