CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

麻烦大家问一个VC问题

楼主syshengok()2006-07-02 19:05:30 在 VC/MFC / 基础类 提问

我在视图里映射了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

相关问题

关键词

得分解答快速导航

  • 帖主:syshengok
  • bwmwm
  • seasol

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo