MFC问题:CFormView实时刷新从CView获得的数据
如图,左边是CControlView,基类CFormView;右边是CTotalView,基类CView鼠标在右边CTotalView单击,可以在鼠标处画线(红线),并得...
如图,左边是CControlView,基类CFormView;右边是CTotalView,基类CView
鼠标在右边CTotalView单击,可以在鼠标处画线(红线),并得到光标的坐标(这些我都做好了,光标坐标也得到了)
可是怎么在左边的CControlView中通过edit控件将坐标显示出来?有什么函数吗? 展开
鼠标在右边CTotalView单击,可以在鼠标处画线(红线),并得到光标的坐标(这些我都做好了,光标坐标也得到了)
可是怎么在左边的CControlView中通过edit控件将坐标显示出来?有什么函数吗? 展开
2个回答
2013-01-14
展开全部
你向左边的视图发送消息PostMessage或者SendMessage均可。把坐标放在参数里
如:自定义消息UM_SHOWPOSITION
然后pFormview->SendMessage(UM_SHOWPOSITION , point.x | (point.y << 16));
在CControlView中收到消息进行显示。
如果你的CTotalView中不想保存CControlView的对象指针,你可以给主框架发送消息:
AfxGetMainWnd()->SendMessage(UM_SHOWPOSITION , point.x | (point.y << 16));
由主框架中转一下再发给CControlView(你主框架肯定有CControlView的对象指针的)。
如:自定义消息UM_SHOWPOSITION
然后pFormview->SendMessage(UM_SHOWPOSITION , point.x | (point.y << 16));
在CControlView中收到消息进行显示。
如果你的CTotalView中不想保存CControlView的对象指针,你可以给主框架发送消息:
AfxGetMainWnd()->SendMessage(UM_SHOWPOSITION , point.x | (point.y << 16));
由主框架中转一下再发给CControlView(你主框架肯定有CControlView的对象指针的)。
更多追问追答
追问
你好我想再问下这个自定义消息怎么写啊?我之前写的都是各处参考的,MFC的底子不好所以不太会写
追答
你可以自行新建一个头文件,在里面声明:#define UM_XXX (WM_USER + 1)
注:XXX你自己命名,那个+1你可以加只要和其它自定义消息不冲突即可
给CControlView新增自定义函数,具体做法是:
在类声明里添加函数声明afx_msg LRESULT OnXXX(WPARAM , LPARAM);
然后在CControlView对应的CPP中的消息路由里加入ON_MESSAGE(UM_XXX, On)
也就是在BEGIN_MESSAGE_MAP(..., ...)
这个下加入。
然后自己再编写OnXXX(WPARAM wapram,LPARAM lparam);这个函数,这样有消息的时候就会调用这个函数,参数就是对应的
SendMessage(UM_SHOWPOSITION , point.x | (point.y > 16);
...
}
}
return 0;
}
如果要使用由主框架中转,那你同样的办法在CMainFrm里加入消息响应
在判断case UM_XXX:时给CControlView发送消息即可。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询