VC++中鼠标拖动实现两对话框之间信息的转移(优化篇)

来源:互联网 发布:dot.js和vue.js 编辑:程序博客网 时间:2024/05/16 18:44

BOOL CDIALOGDlg::PreTranslateMessage(MSG *pMsg)
{
 BOOL bFlag=CDialog::PreTranslateMessage(pMsg);
 CRect cRectPre,cRectNow,cRectEnd;
 CPoint curPoint;   
 CString strTime;

 SYSTEMTIME sysTime;
 GetLocalTime(&sysTime);

 strTime.Format("  %d-%d-%d-%d-%d-%d  ",sysTime.wYear,sysTime.wMonth,sysTime.wDay,sysTime.wHour,sysTime.wMinute,sysTime.wSecond);

 //
 GetCursorPos(&curPoint); //why begin need to add ::?????????????????
 GetDlgItem(IDC_LISTPRE)->GetWindowRect(&cRectPre);
 GetDlgItem(IDC_LISTNOW)->GetWindowRect(&cRectNow);
 GetDlgItem(IDC_LISTEND)->GetWindowRect(&cRectEnd);
 
 if(curPoint.x >=cRectPre.left && curPoint.x <=cRectPre.right && curPoint.y >=cRectPre.top && curPoint.y <=cRectPre.bottom )
 {
  if(pMsg->message == WM_LBUTTONDOWN )
  {
   m_iIndexPre=m_listPre.GetCurSel();//gain position small choosed
   if(m_iIndexPre != -1)
   {
    m_listPre.GetText(m_iIndexPre,m_strTrans);
   }
  }
  else if(pMsg->message == WM_LBUTTONDBLCLK)
  {
   m_iIndexPre=m_listPre.GetCurSel();//gain position small choosed
   if(m_iIndexPre != -1)
   {
    m_listPre.GetText(m_iIndexPre,m_strChange);
    GetDlgItem(IDC_EDIT)->SetWindowText(m_strChange);
    m_bFgChg=true;
   }

  }
 }
 if(curPoint.x >=cRectNow.left && curPoint.x <=cRectNow.right && curPoint.y >=cRectNow.top && curPoint.y <=cRectNow.bottom )
 {
  if((pMsg->message == WM_LBUTTONDOWN )&& (pMsg->hwnd == GetDlgItem(IDC_LISTNOW)->m_hWnd))
  {
   m_iIndexNow=m_listNow.GetCurSel();//gain position small choosed
   if(m_iIndexNow != -1)
   {
    m_listNow.GetText(m_iIndexNow,m_strTrans);
   }
  }
  else if((pMsg->message == WM_LBUTTONUP )&& (pMsg->hwnd == GetDlgItem(IDC_LISTPRE)->m_hWnd))
  {
   m_strTrans+=strTime;
   m_listNow.AddString(m_strTrans);
   m_strTrans=_T("");
   m_listPre.DeleteString(m_iIndexPre);
  }
  //else if(pMsg->message == WM_LBUTTONDBLCLK)
  //{
  // m_iIndexNow=m_listNow.GetCurSel();//gain position small choosed
  // if(m_iIndexNow != -1)
  // {
  //  m_listNow.GetText(m_iIndexNow,m_strChange);
  //  GetDlgItem(IDC_EDIT)->SetWindowText(m_strChange);
  //  DeleteItem(m_iIndexNow);
  //  m_bFgChg=true;
  // }

  //}
 }
 if(curPoint.x >=cRectEnd.left && curPoint.x <=cRectEnd.right && curPoint.y >=cRectEnd.top && curPoint.y <=cRectEnd.bottom )
 {
  if((pMsg->message == WM_LBUTTONUP) && (pMsg->hwnd == GetDlgItem(IDC_LISTNOW)->m_hWnd))
  {
   m_strTrans+=strTime;
   m_listEnd.AddString(m_strTrans);
   m_strTrans=_T("");
   m_listNow.DeleteString(m_iIndexNow);
  }
 }
 return bFlag;
}

原创粉丝点击