麻烦大家问一个VC问题
我在视图里映射了WM_MOVE消息,可是当移动窗口时执行不到,这是为什么呀,怎样才能执行到啊,
谢谢大家
问题点数:20、回复次数:13Top
1 楼bwmwm()回复于 2006-07-02 22:31:47 得分 0
把你的试图类的代码贴出来看看
要有头文件,也要有CPPTop
2 楼bwmwm()回复于 2006-07-02 22:42:36 得分 0
在头文件中有
//{{AFX_MSG(CMyView)
afx_msg void OnMove(int x, int y);
//}}AFX_MSG
在这个宏中间定义你的消息处理函数,就像我给你看的一样
在CPP文件里有
BEGIN_MESSAGE_MAP(CSoftView, CScrollView)
//{{AFX_MSG_MAP(CSoftView)
ON_WM_MOVE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
在这个宏里面像我给出的一样声明
然后在CPP文件里给出函数体
void CMy View::OnMove(int x, int y)
{
CScrollView::OnMove(x, y);
// TODO: Add your message handler code here
}
Top
3 楼bwmwm()回复于 2006-07-02 22:47:47 得分 0
或者你的问题是出在消息处理函数添加错了类
你把消息函数添加到CMainFrame类中试试看
Top
4 楼syshengok()回复于 2006-07-02 22:50:09 得分 0
谢谢楼上的回复,我的视图中的.h文件和.cpp文件是和你说的一样的,可是不知为什么,不管窗口怎么移动,怎么也执行不到OnMove映射函数.Top
5 楼syshengok()回复于 2006-07-02 22:51:51 得分 0
放到CMainFrame类就可以执行到OnMove函数Top
6 楼hhyytt(鹦鹉螺)回复于 2006-07-02 23:15:11 得分 0
放错了类,放到CMainFrame类。Top
7 楼syshengok()回复于 2006-07-03 09:20:45 得分 0
那为什么在视图类中不行呢,是视图不支持这个消息吗,我想在视图中响应这个消息呀Top
8 楼yuyuan830705()回复于 2006-07-03 09:43:11 得分 0
赫赫。是不是这个错了
BEGIN_MESSAGE_MAP(CSoftView, CScrollView)
//{{AFX_MSG_MAP(CSoftView)
ON_WM_MOVE() // 改为 WM_MOVE
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
WM = Windows Message
Top
9 楼syshengok()回复于 2006-07-03 10:23:43 得分 0
试了不行,我的.h文件里是 //{{AFX_MSG(CMyView)
afx_msg void OnMove(int x, int y);
//}}AFX_MSG
.cpp文件为 BEGIN_MESSAGE_MAP(CMyView, CView)
//{{AFX_MSG_MAP(CMyView)
ON_WM_MOVE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
执行函数为 void CMyView::OnMove(int x, int y)
{
CView::OnMove(x, y);
}
麻烦大家指点Top
10 楼bwmwm()回复于 2006-07-03 19:01:24 得分 10
我是这样想的,不知道对不对
不知道有没有在一个CMainFrame中放入多个试图
在多个试图中,调整其中一个试图的大小,可以响应OnSize这个函数
那是因为你改变的是试图的大小,鼠标的消息是传给试图了
在你的这个程序中,实际上你移动的是框架,移动的不是试图,消息是传给框架,不是传给试图
所以当你拖动框架的时候,试图接收不到消息。你试着去找找消息传递方面的资料看看Top
11 楼seasol(海子@CSDN助手:http://www.cuteie.com/other.asp)回复于 2006-07-03 20:19:42 得分 10
WM_MOVE消息的发生,是当“overlapped and pop-up windows”相对于桌面移动,“child windows”相对于父窗口移动。
显然你移动的是框架窗口,而视图相对于框架窗口没有发生移动。
==========================================
你不能奢望同时是伟大的而又是舒适的。——巴里
CSDN助手 签名走马灯Top
12 楼wilsonloveada(ada是MM)回复于 2006-07-03 20:25:54 得分 0
楼上说的有道理,你的OnMove响应函数必须放在框架类进行响应Top
13 楼syshengok()回复于 2006-07-04 09:07:58 得分 0
原来是这样啊,谢谢大家.我怎么给分呢Top




