子对话框响应WM_MOUSEMOVE消息的问题

时间:2022-11-01 18:10:36
vc++下新建了对话框应用程序,在这个对话框初始化的时再创建一个子对话框,在这个子对话框上显示一张BMP图片。

BOOL CBrownBMPDlg::OnInitDialog()
{
 CDialog::OnInitDialog();

 ................

 //创建子对话框
 m_BrownDlg.Create(IDD_BMPDLG_DIALOG,this);
 CRect rect,framerect;
 m_BrownDlg.GetClientRect(rect);
 
 m_Frame.GetClientRect(framerect);
 m_Frame.MapWindowPoints(this,framerect);
 m_BrownDlg.MoveWindow(framerect);
 m_BrownDlg.ShowWindow(SW_SHOW);

 m_Bmp.SetParent(&m_BrownDlg);
 CRect bmprect;
 m_Bmp.GetClientRect(bmprect);
 m_Bmp.MoveWindow(0,0,bmprect.Width(),bmprect.Height());
 return TRUE;  // return TRUE  unless you set the focus to a control
}


现在我想完成的功能是:在这张图片上移动鼠标,在主对话的俩个EDIT控件上显示鼠标的x,y坐标。


8 个解决方案

#1


在子对话框的窗口例程中相应消息

#2


引用 1 楼 SaberIII 的回复:
在子对话框的窗口例程中相应消息
 麻烦您说具体点,我不懂。

#3


在dodataexchange()中
http://hi.baidu.com/chinafire521/item/8f18a91a13edd8dbbf90424f

#4


1.在CBrownBMPDlg上添加WM_MOUSEMOVE消息;
2.在CBrownBMPDlg::OnMouseMove(CPoint pt)
  {
   CString strX;
   CString strY;
    
    strX.Format(_T("%d"),pt.x);
    strY.Format(_T("%d"),pt.y);
    m_editXpt.SetWindowText(strX);//m_edit是CEdit控件的成员变量
    m_editYpt.SetWindowText(strY);
  }

#5


引用 4 楼 jsphuang 的回复:
1.在CBrownBMPDlg上添加WM_MOUSEMOVE消息;
2.在CBrownBMPDlg::OnMouseMove(CPoint pt)
  {
   CString strX;
   CString strY;
    
    strX.Format(_T("%d"),pt.x);
    strY.Format(_T("%d"),pt.y);……

这种方法我试了,不行的。要不你把邮箱留下,我把程序发给你,你帮我看看。我实在搞不定,谢谢!

#6


窗口关系是:
主对话框-》子对话框-》m_bmp
edit x,y             mouse

所以 m_bmp 要 getparent 2次 才 到 主对话框。

#7


waver601@sohu.com 请在标题注明csdn网友

#8


把图像在 OnPaint 中显示在主对话框中不就结了,省得还要费神去找哪个WND的MOUSEMOVE

#1


在子对话框的窗口例程中相应消息

#2


引用 1 楼 SaberIII 的回复:
在子对话框的窗口例程中相应消息
 麻烦您说具体点,我不懂。

#3


在dodataexchange()中
http://hi.baidu.com/chinafire521/item/8f18a91a13edd8dbbf90424f

#4


1.在CBrownBMPDlg上添加WM_MOUSEMOVE消息;
2.在CBrownBMPDlg::OnMouseMove(CPoint pt)
  {
   CString strX;
   CString strY;
    
    strX.Format(_T("%d"),pt.x);
    strY.Format(_T("%d"),pt.y);
    m_editXpt.SetWindowText(strX);//m_edit是CEdit控件的成员变量
    m_editYpt.SetWindowText(strY);
  }

#5


引用 4 楼 jsphuang 的回复:
1.在CBrownBMPDlg上添加WM_MOUSEMOVE消息;
2.在CBrownBMPDlg::OnMouseMove(CPoint pt)
  {
   CString strX;
   CString strY;
    
    strX.Format(_T("%d"),pt.x);
    strY.Format(_T("%d"),pt.y);……

这种方法我试了,不行的。要不你把邮箱留下,我把程序发给你,你帮我看看。我实在搞不定,谢谢!

#6


窗口关系是:
主对话框-》子对话框-》m_bmp
edit x,y             mouse

所以 m_bmp 要 getparent 2次 才 到 主对话框。

#7


waver601@sohu.com 请在标题注明csdn网友

#8


把图像在 OnPaint 中显示在主对话框中不就结了,省得还要费神去找哪个WND的MOUSEMOVE