增加在ClassWizard中没有罗列事件的处理方法

原创 2001年06月06日 09:16:00

 

增加在ClassWizard中没有罗列事件的处理方法
今天想做一个小程序,用到了WM_DEVICECHANGE消息和与之对应的
afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData ) 函数,结果发现这个函数在ClassWizard中没有罗列出来,就算我在ClassWizard的Class Info标签栏的Message filter改为windows也是没有这个消息,其实ClassWizard中的函数只列了最常用的一部分,并不是全部(因为全部的消息太多了),所以要处理WM_DEVICECHANGE消息只能通过手动来添加代码,忙了半天终于发现了处理的方法
基本上分为三步:
    1.在类声明处添加成员函数
protected:
   afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData );


    2.在相应的cpp文件中加入BOOL OnDeviceChange(UINT, DWORD)的函数体;
BOOL CXXXXX::OnDeviceChange( UINT nEventType, DWORD dwData )
{
 if(nEventType == DBT_DEVICEARRIVAL)
  MessageBox("CD arrival","Note",MB_OK+MB_ICONINFORMATION);
 return TRUE;

}


    3。在消息映射宏中加入
BEGIN_MESSAGE_MAP(CXXXXXX, CDialog)
 //{{AFX_MSG_MAP(CTest031Dlg)
 ON_WM_SYSCOMMAND()
 ON_WM_PAINT()
 ON_WM_QUERYDRAGICON()
 //}}AFX_MSG_MAP
 ON_WM_DEVICECHANGE()   //此句为加入的映射,注意:一定要将这句加在两个AFX_MSG_MAP外
END_MESSAGE_MAP()
     一般来说,对应的消息映射宏语句的格式与消息本身很相似,只要在相应的消息加前缀ON_和后缀(),
例如:对于像WM_SOMETHING这样的消息,其对应的消息映射宏语句为ON_WM_SOMETHING(),如果想要确认
是否正确可以在MSDN中查找验证。

为什么明明有这个类,但在classwizard里找不到?

classwizard 为我们添加消息等方面,提供了很多的方便。     但是有时候,我们会遇到在类试图里明明有这个类,但在添加对此类对消息响应函数时,在classwizard里却找不到此类的类名。...
  • zhongjling
  • zhongjling
  • 2012年12月11日 16:00
  • 2194

VC6.0 有的类在classWizard中无法显示的问题

经常复制、粘贴别人写好的类,有时候会出现类在classWizard中无法显示的问题,添加新的同名类又提示已经存在该文件 只需两步就可以解决: 一、关闭工程,把文件夹中的clw后...
  • oceanark
  • oceanark
  • 2016年07月13日 22:37
  • 506

增加在节点上的事件

listeners: { 'selectionchange': function (view, rs,node) { }, 'beforeitemexpa...
  • TUD2014
  • TUD2014
  • 2016年01月18日 12:03
  • 188

Android学习笔记(36):Android的两种事件处理方式

Android提供了两种事件处理的方式:基于回调的事件处理 和 基于监听的事件处理。 我们来说的容易理解一点: (1)基于回调的事件处理就是继承GUI组件,并重写该组件的事件处理方法。除了一些特定...
  • qq_18738333
  • qq_18738333
  • 2016年04月17日 00:30
  • 3927

MFC VS2012中classWizard、工具箱、属性在哪里?

问:vs2010中怎么打开classWizard
  • u013174689
  • u013174689
  • 2014年06月28日 11:12
  • 3384

vc6.0 在用MFC ClassWizard给新建立的类添加成员变量选择category时没有Value选项

问题描述:       vc6.0 在用MFC ClassWizard给新建立的类添加成员变量选择category时没有Value选项         如下图: 原因分析:是添加了一个新...
  • lhshu2008
  • lhshu2008
  • 2013年01月21日 16:42
  • 3560

关于ListView的id的问题

可以是“@+id/list1234" 但程序里就需要改动啦 默认的 setListAdapter(adapter) 它是使用系统默认的id 必须是"@+id/android:list" ...
  • cjq_insist
  • cjq_insist
  • 2014年10月07日 21:01
  • 335

form中的onblur事件简单的介绍

在HTML中关于表单是事件有很多,在这个地方介绍一个oblur这个事件,是表示输入框失去焦点,这个事件的值一个script的脚本,我们可以执行这个脚本来实现当输入框失去脚本的情形,和一些后续的处理。在...
  • datouniao1
  • datouniao1
  • 2015年08月13日 21:48
  • 730

VC6里改变对话框资源ID号后classwizard不能正常显示控件ID的原因及解决方法

用vc6写对话框程序时遇到这样一个问题:用vc6正常生成对话框工程,打开ClassWizard,正常情况下应该显示“确定”及“取消”两个按钮的ID号“IDOK”和“IDCANCEL”。因为需要,我将对...
  • DryFisHH
  • DryFisHH
  • 2006年03月17日 13:12
  • 3769

(4)事件处理——(10)事件处理上下文(Event handler context)

当事件处理器被触发以后,关键词this会指向行为被附加的DOM元素。之前,我们说过,$()可以使用DOM元素作为他的参数,这就是这种能力可以使用的关键因素之一。通过在事件处理器中书写$(this),我...
  • godha
  • godha
  • 2013年10月27日 00:21
  • 1150
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:增加在ClassWizard中没有罗列事件的处理方法
举报原因:
原因补充:

(最多只允许输入30个字)