如何在对话框程序的一个按钮控件的鼠标移动消息中修改对话框上其他控件值?

cy010510630 2010-08-01 10:39:10
我的问题是这样的
一个基于对话框的工程
自己从CButton派生了一个CMyButton类,此类中拦截MouseMove消息,并想在此消息中,修改对话框上的两个CEdit控件的值,一个CEdit显示鼠标X坐标,一个CEdit显示鼠标Y坐标。
两个CEdit控件已经通过ClassWizard添加了变量关联,关联Value(不是关联Control),int型。

我的代码如下,两种方式都有错
void CMyButton::OnMouseMove(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
// m_pDlg为CMyButton的一个成员变量
// m_pDlg = (CTest6Dlg *)GetDlgItem(IDD_TEST6_DIALOG); // 方法1 若用此行会导致运行时错误
m_pDlg = (CTest6Dlg *)GetParent(); //方法2 程序不会出错,但是没有效果
m_pDlg->m_iX= point.x;
m_pDlg->m_iY= point.y;
MessageBox("a");
CButton::OnMouseMove(nFlags, point);
}


...全文
66 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wltg2001 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cy010510630 的回复:]
还想问下,是不是因为我现在CMyButton中调用GetDlgItem函数是错误,必须在窗口的CPP文件中,才能用GetDlgItem?
[/Quote]
GetDlgItem是获得对话框中子控件的,如果你在CMyButton中调用,那么得到的是就是CMyButton的子控件,但是CMyButton根本就没有子控件
cy010510630 2010-08-02
  • 打赏
  • 举报
回复
还想问下,是不是因为我现在CMyButton中调用GetDlgItem函数是错误,必须在窗口的CPP文件中,才能用GetDlgItem?
cy010510630 2010-08-02
  • 打赏
  • 举报
回复
谢谢wltg2001
成功了
wltg2001 2010-08-01
  • 打赏
  • 举报
回复
m_pDlg = (CTest6Dlg *)GetParent(); //方法2 程序不会出错,但是没有效果
============
这个是可以的,但是就像上面所说,你是用的关联变量,所以在
m_pDlg->m_iX= point.x;
m_pDlg->m_iY= point.y;之后还是用UpdateData去更新它,不过因为EDIT在父窗口中,所以不是直接UpdateData(FALSE);而是写成: m_pDlg->UpdateData(FALSE);
dahaiI0 2010-08-01
  • 打赏
  • 举报
回复
GetDlgItem 函数功能:该函数检索指定的对话框中的控制句柄。
顶2楼.
zhangweiit 2010-08-01
  • 打赏
  • 举报
回复
m_pDlg->m_iX= point.x;
m_pDlg->m_iY= point.y;
UpdateData(FALSE);
zhangweiit 2010-08-01
  • 打赏
  • 举报
回复
方法2是对的,不过你忘记了在后面UpdateData

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧