// // if the dockpanel is moving, and it's caused by us, // then we need to decide whether to dock it or keep it floating // LRESULT DockPanel_OnMoving(DOCKPANEL *dppThis) { POINT ptCurrent; RECT rect; POINT pt; RECT r; DOCKPANEL *dppUnder; UINT area; if(!dppThis->fDragging) return 0; GetCursorPos(&pt); area = GetDockTarget(dppThis->pDockServer, dppThis, pt, &r, &dppUnder); if(dppUnderLast != dppUnder || lastArea != area) { if(1)//dppUnderLast != dppUnder) { // kick off timer if(hwndTransPanel != 0) { hwndAnimPanel = hwndTransPanel; SetWindowLongPtr(hwndAnimPanel, GWLP_USERDATA, 255); SetTimer(dppThis->hwndPanel, (UINT_PTR)hwndAnimPanel, 10, 0); hwndTransPanel = 0; } } else { DestroyWindow(hwndTransPanel); hwndTransPanel = 0; } } dppUnderLast = dppUnder; lastArea = area; if(hwndTransPanel == 0) { hwndTransPanel = ShowTransWindow(dppThis, dppThis->hwndPanel, &r, area ? area : DWS_DOCKED_MASK, area ? 3 : 0); } GetWindowRect(dppThis->hwndPanel, &rect); dppThis->xpos = rect.left;//(short)LOWORD(lParam); dppThis->ypos = rect.top;///(short)HIWORD(lParam); g_dppTargetDockPanel = 0; GetCursorPos(&ptCurrent); return 0; }
void ShowSel(HWND hwnd) { if(fTransSel) { hwndTransPanel = ShowTransWindow(hwnd); if(hwndTransPanel == 0) { fTransSel = FALSE; InvertWindow(hwnd, fShowHidden); } } else { InvertWindow(hwnd, fShowHidden); } }