怎样区别各个控件发送的消息

清风水岸 2008-09-13 02:44:49
正在搞一个基于对话框的东西,设计了很多个按钮控件,想在不同的按键按下时在编辑框中输入不同的内容,但是不想用多个函数实现。想只用一个实现,不知道是不是可以,我的想法是按键发送的消息来区分(每个按键的ID是不同)是哪个按键按下的,然后进行相应的操作,但是查了好多函数好像没有。敬请高手支招。
...全文
134 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
清风水岸 2008-09-25
  • 打赏
  • 举报
回复
谢谢大家的支持,受教。该结贴了。:-)
wqvbjhc 2008-09-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 schlafenhamster 的回复:]
使用ON_NOTIFY_RANGE( wNotifyCode, id, idLast, memberFxn )
[/Quote]
CGrieve 2008-09-15
  • 打赏
  • 举报
回复
顶楼上,看完后我的第一反应也是GetDlgCtrlID()。
rookieme 2008-09-15
  • 打赏
  • 举报
回复
太复杂,也得不到好的效果,VC其实很简单,有很多好的办法,被我们不少"高手"神化了

一个极简单的办法:
1 如果按扭已有消息函数,将这些消息函数删除
2 双击其中一个按扭,添加上消息函数,函数名随便定义,如Button1
3 双击其它按扭,在弹出的请输入消息函数名的对话框中将函数名改为先前定义的函数Button1
4 修改Button函数,使其用各按扭的ID区分按扭和执行相应动作
void CCtmpDlg::OnButton1()
{


CString str;
switch(GetFocus()->GetDlgCtrlID())
{
case IDC_BUTTON1:
str="1";
break;
case IDC_BUTTON2:
str="2";
break;
case IDC_BUTTON3:
str="3";
break;
}
SetDlgItemText(IDC_STATIC1,str);

}
paerxiushi 2008-09-15
  • 打赏
  • 举报
回复
还是手把手教你吧:
1.在对话框头文件中加入如下消息声明:
afx_msg void OnSerialBtn(UINT btnid);
2.在消息映射中加入如下代码:
BEGIN_MESSAGE_MAP(CAverageDlg, CDialog)
。。。
ON_COMMAND_RANGE(IDC_BUTTON2,IDC_BUTTON4,&CAverageDlg::OnSerialBtn)
//其中IDC_BUTTON2和IDC_BUTTON4之间按钮的ID值必须连续.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
3.定义如下消息体:
void CAverageDlg::OnSerialBtn(UINT btnid)
{
if(btnid==IDC_BUTTON3)
{
MessageBox(L"你按下了BUTTON3");
}
if(btnid==IDC_BUTTON4)
{
MessageBox(L"你按下了BUTTON4");
}

}
参数btnid用于区分哪个按钮按下了。
lqflyc 2008-09-14
  • 打赏
  • 举报
回复
自己定义消息
每当你按下按钮时就发送消息。
这样是一个函数吧。
BackslideAngel 2008-09-14
  • 打赏
  • 举报
回复
你可以给每个控件都定义一个属于自己的消息
然后在PreTranslateMessage中截获消息,再对每个控件做相应的处理!
hoosean 2008-09-14
  • 打赏
  • 举报
回复
关注中............
schlafenhamster 2008-09-13
  • 打赏
  • 举报
回复
使用ON_NOTIFY_RANGE( wNotifyCode, id, idLast, memberFxn )
清风水岸 2008-09-13
  • 打赏
  • 举报
回复
我用的是按下按钮,请二楼的把程序写详细些。谢了
paerxiushi 2008-09-13
  • 打赏
  • 举报
回复
对于按钮控件来说,被单击的时候会父窗体发送BN_CLICKED消息,存在这五类按钮会向父窗体发送BN_CLICKED,下按按钮,单选按钮,复选按钮,三态复选按钮,自我绘制按钮。如果只是凭按钮ID来区分控件,可以这么做:
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
if(wmId==IBC_NAME)
{
if(wmEvent==BN_CLICKED)
{
//添加内容到编辑框
}
}
wsphere 2008-09-13
  • 打赏
  • 举报
回复
这是类似于SDK编写Windows程序的情况,自己实现WndProc()。但是在MFC中已经映射好了,不太好做
1,mruxdzip.exe
在菜单上最近打开文件的历史记录控件(1453KB)
2,applogger.zip
具有删除到回收站、读写 INI 文件、计算剩余磁盘空间,复制文件和添加到 Windows 文档列表(57KB)
3,ccrpbd10.zip
Windows 游览对话框控件(75KB)
4,ccrpdrg.zip
增强了的列表框控件(71KB)
5,ccrpfd.zip
Windows 文件对话框控件,功能强劲,可制作出 VB 的文件对话框(95KB)
6,ccrphky.zip
键盘控件(69KB)
7,ccrpprg.zip
进程杆控件(150KB)
8,ctlist.exe
一个增强的 ListView 控件(376KB)
9,ctlistbar.exe
Microsoft Outlook 风格的列表框控件(287KB)
10,cttree.exe
一个增强的 TreeView 控件(424KB)
11,dprogressw.exe
DameWare 公司出品进程杆控件(177KB)
12,proplistw.exe
DameWare公司出品类似 VB 中的属性列表控件(291KB)
13,buttnbar6.zip
Outlook 列表框控件(700KB)
14,fsi.zip
系统信息控件(24KB)
15,fsshr20d.exe
应用程序交换数据控件,不需要使用 DDE,COM 和剪贴板(289KB)
16,gbarocx.zip
进程杆控件(171KB)
17,graphic.zip
不需要调用 API ,创建一个 Office Ani 精灵助手(50KB)
18,ctlbar.ZIP
用过Oicq的用户,一定熟悉这个控件(59KB)
19,big2gb.zip
一个BIG5码<=>GB码互换的完全免费的ActiveX控件(81KB)
20,capscreen.zip
这是一个屏幕拷贝的控件,可以实现全屏的拷贝并支持另存为位图类型的文件 (28KB)
21,digital.zip
能够以液晶字体方式显示数字的一个小控件(15KB)
22,eqpro.zip
一个调整系统音量的控件,控制音量包括;很方便地控制,控件也很小巧(15KB)
23,flatbar.zip
一个工具栏控件,可变VB5.0的工具栏为Office或IE类型的平面工具栏(27KB)
24,lyftools.zip
这是一个封装了500多个Windows API的控件(229KB)
25,masflc.zip
一个用来播放 FLC,FLI 的 3DS 动画格式控件(60KB)
26,xzipdemo.zip
Xceed Zip控件 (98KB)
27,lfbb.zip
兰花打印控件(预览及打印输出,它支持多列,文本自动换行,页头和页尾,表格及段落)(186KB)
28,keyboard.zip
检测键盘按键控件(13KB)
29,winapi.zip
这是一个封装了部分Windows API的控件(例如:发EMail、改变分辨率等)(92KB)
30,dbdemo.zip
3D立体按钮控件(138KB)
31,spelltxt.zip
一个文档拼音检查的控件(337KB)
32,swflash.zip
播放的Flash文件的控件(160KB)
33,185.zip
EasySound 一个封装了DirectSound API的控件 (565KB)
34,157.zip
子分类控件,包含控件源码(44KB)
35,132.zip
MikoUtil系列控件(184KB)
36,109.zip
GB-Big5语言编码转换的控件源码(39KB)
37,108.zip
微软的DirectX 7 for VB开发库文件(187KB)
38,11.zip
MsgHook 用于子分类、截获消息控件(147KB)
39,c1.zip
Windows 9x注册表控件(35KB)
40,c8.zip
只要点击就可以打开超连接的控件(10KB)
41,c9.zip
GIF98(24KB)
42,c10.zip
sysmenu(9KB)
43,c11.zip
小型控件集(40KB)
44,c12.zip
anigif(40KB)
45,cst.zip
圆盘仪表控件 V3.1(4143KB)
46,EZX.zip
让你能在VB中使用DirectX的控件,附例子和源代码(1619KB)
47,NCTDesignBox.exe
NCTDesignBox 1.01(513KB)
48,c_arp.zip
Activereport 1.1的破解文件(1KB)
49,clock.zip
显示时间和日期信息控件(5KB)
50,InputeDate.zip
日期输入框控件(13KB)
51,api21.zip
封装了500多个Windows API的控件,覆盖了网络、系统、界面、多媒体、图形、文字等各个方面(261KB)
52,ARRegistry.zip
访问系统注册表的控件(25KB)
53,isysinfo.zip
是一个可以获得系统信息的ActiveX控件,该控件是由VB5.0编写,使用这个控件可以获得系统的内存大小、CPU类型、显示器的分辩率、颜色数系统中各个驱动器、CPU占用率、Windows版本等信息 (19KB)
54,MsgHoo32.zip
同样是Windows消息处理控件(22KB)
55,MsgBlst32.zip
这是一个拦截、处理消息控件(18KB)
56,threed32.zip
一个3D控件(73KB)
57,vfoutbar.zip
这里还有另一个控件 OutLook 风格的 BAR(39KB)
58,ovalbutton.zip
椭圆形按钮控件(8KB)
59,3dbdemo.zip
3D立体按钮控件(138KB)
60,tubPrinter.zip
可直接打印DataGrid,ListView,MsFlexGrid(53KB)
61,shape.zip
椭圆、三角、星...形按钮控件(131KB)
62,command.zip
千千平面按钮(35KB)
63,Chat.zip
Chat控件(16KB)
内容简介   本书主要介绍asp.net的控件开发,书中通过70多个例子讲解了asp.net控件开发技术的各个方面,而且剖析了很多控件中系统基类源代码,读者从这些系统源代码可以体会设计模式思想。如果扎实地掌握了asp.net控件的运行机制,开发一个页面级的asp.net应用程序会变得非常简单。本书宗旨就是让开发人员真正理解asp.net技术,帮助开发人员提高asp.net开发的技术水平。学完本书后您不仅能够掌握控件开发各个方面的技术,而且深晓asp.net的工作原理。对大部分使用asp.net技术开发两年左右的开发人员来说,本书75%以上的内容可能没有接触过,本书将通过笔者精心准备的一些生动的例子来阐述这些内容。.    本书适合从事asp.net技术多年想往深度理解asp.net工作机制的开发人员阅读,对于刚刚入门的初级开发人员,本书的前面几章也介绍了几个入门性的应用例子,本书还可以作为在校学生的就业预备教材。针对读者安装的开发环境不同,笔者分别为vs 2005和vs 2008建立了解决方案,即无论您是使用vs 2005还是vs 2008都可以成功打开本书随书光盘的代码,只是使用vs 2005打开的解决方案不包含.net 3.5对应章节内容的示例代码。... 目录 第1章 服务器控件概述及开发环境部署.1 1.1 自定义服务器控件1 1.2 服务器控件在软件开发过程中的作用1 1.3 在控件开发中提升自己2 1.4 可继承控件基类介绍2 1.5 运行一个简单的控件7 1.5.1 开发一个简单控件7 1.5.2 部署和运行11 1.6 控件生命周期12 1.6.1 概述12 1.6.2 用代码跟踪控件生命周期过程14 1.7 本章总结17 第2章 服务器控件开发中的调试技术18 2.1 预置代码示例18 2.2 调试页面服务端代码19 2.3 服务器控件的调试20 2.3.1 运行模式下的调试方法20 2.3.2 设计模式下的调试方法20 2.4 javascript脚本调试方法22 2.4.1 调试页面中的javascript脚本(方法一)22 .2.4.2 调试页面中的javascript脚本(方法二)23 2.4.3 调试非嵌入式javascript脚本文件23 2.4.4 调试嵌入式javascript脚本资源文件24 2.4.5 高效率调试的技巧24 2.5 ajax library对javascript调试支持26 2.6 本章总结26 第3章 从零开始开发服务器控件27 3.1 选择基类27 3.2 控件呈现顺序28 3.3 render呈现控件的几种方式30 3.3.1 使用htmltextwriter类输出30 3.3.2 直接输出html标签32 3.3.3 使用服务器控件的rendercontrol方法33 3.4 addattributestorender方法34 3.5 createchildcontrols方法35 3.6 inamingcontainer接口36 3.7 实现复合控件38 3.7.1 createchildcontrols方法39 3.7.2 childcontrolscreated属性39 3.7.3 ensurechildcontrols方法39 3.7.4 recreatechildcontrols方法39 3.7.5 controls属性40 3.7.6 hascontrols方法40 3.7.7 hasevents方法40 3.7.8 findcontrol方法41 3.7.9 实现复合控件示例41 3.8 常用开发技巧51 3.8.1 designmode属性51 3.8.2 屏蔽基类控件中的属性52 3.8.3 page.request.browser属性53 3.8.4 设置控件id规范53 3.8.5 增强findcontrol功能54 3.8.6 映射服务端控件值到客户端55 3.8.7 禁止派生自compositecontrol的控件创建子控件56 3.8.8 使用createchildcontrols的注意事项56 3.8.9 不要误解设计元属性defaultvalue57 3.8.10 在render方法中利用基类资源57 3.8.11 条件编译&条件属性60 3.9 本章总结61 第4章 服务器控件属性62 4.1 控件属性的作用62 4.1.1 系统属性62 4.1.2 自定义属性62 4.2 简单属性63 4.3 属性的设计时特性64 4.4 复杂属性67 4.4.1 概述67 4.4.2 复杂属性的几种标记形式67 4.4.3 深入研究——复杂属性分析器79 4.5 深入研究——定制自己的属性编辑器85 4.5.1 系统属性编辑器85 4.5.2 定制属性编辑器91 4.6 类型转换器126 4.6.1 系统类型转换器126 4.6.2 定制自己的类型转换器128 4.7 实现自定义属性138 4.8 本章总结145 第5章 事件和数据回发机制146 5.1 控件事件和数据回发概述146 5.1.1 事件及其意义146 5.1.2 数据回发机制147 5.2 事件和数据回发机制的实现148 5.2.1 客户端回传事件接口ipostbackeventhandler148 5.2.2 客户端回发/回调揭密150 5.2.3 回传数据处理接口ipostbackdatahandler153 5.2.4 正确处理继承基类中控件的事件159 5.2.5 扩展kingtextbox控件功能(kingtextboxcanpostevent控件)161 5.3 复合控件的事件处理机制168 5.3.1 高效率事件集合对象168 5.3.2 定制自己的委托和事件参数类170 5.3.3 复合控件的事件处理175 5.3.4 自动完成功能控件searchcontrolintelligent185 5.4 本章总结193 第6章 页面状态机制194 6.1 页面状态概述194 6.2 视图状态机制195 6.2.1 istatemanager接口195 6.2.2 控件生命周期中的装载和保存视图阶段196 6.2.3 简单类型视图状态应用197 6.2.4 实现自定义类型视图状态205 6.3 控件状态机制217 6.4 视图状态和控件状态的关系221 6.4.1 在禁用视图状态的情况下仍然使用viewstate对象221 6.4.2 istatemanager接口仍然可以在控件状态中使用223 6.4.3 视图状态和控件状态组合使用规则225 6.5 加密页面状态225 6.6 清除页面状态226 6.7 对动态添加控件的视图状态分析228 6.8 自定义类型转换器实现高效率序列化231 6.9 页面状态性能优化策略238 6.9.1 存储位置优化——把视图状态信息保存在服务端而非客户端238 6.9.2 体积优化——压缩视图状态数据240 6.9.3 分块存储视图状态数据243 6.10 视图状态和控件状态的总结243 6.11 本章总结244 第7章 定制自定义控件主题样式245 7.1 控件样式概述245 7.2 asp.net对样式的支持245 7.2.1 style类的工作原理及使用245 7.2.2 webcontrol基类对样式的支持功能及其工作原理249 7.2.3 htmltextwriter类对控件样式的支持252 7.2.4 定义控件内部的样式属性规则253 7.2.5 两个常用转换方法256 7.3 应用示例260 7.3.1 复合控件样式及视图状态260 7.3.2 控件结构与样式分离方案268 7.4 本章总结295 第8章 控件客户端编程模型297 8.1 asp.net服务端控件对客户端的支持297 8.2 clientscriptmanager类功能详解301 8.2.1 registerarraydeclaration方法301 8.2.2 registerclientscriptblock方法302 8.2.3 registerclientscriptinclude方法303 8.2.4 registerclientscriptresource方法304 8.2.5 registerstartupscript方法305 8.2.6 registerexpandoattribute方法305 8.2.7 registerhiddenfield方法306 8.2.8 getcallbackeventreference方法307 8.2.9 getpostbackclienthyperlink方法307 8.2.10 getpostbackeventreference方法308 8.2.11 getwebresourceurl方法308 8.2.12 registeronsubmitstatement方法309 8.3 客户端回调309 8.4 客户端控件应用示例323 8.4.1 封装js客户端对象323 8.4.2 封装htc客户端对象343 8.4.3 在线签名控件示例应用371 8.5 常用的一些javascript框架385 8.6 本章总结387 第9章 定制用户控件388 9.1 用户控件概述388 9.1.1 用户控件的作用..388 9.1.2 了解system.web.ui.usercontrol基类388 9.2 用户控件应用示例389 9.2.1 简单用户控件389 9.2.2 复杂数据绑定用户控件394 9.3 用户控件缓存419 9.3.1 asp.net缓存介绍419 9.3.2 用户控件缓存420 9.4 本章总结421 第10章 开发验证控件422 10.1 验证控件的工作原理422 10.1.1 内置验证控件简述422 10.1.2 验证控件的工作机制解析423 10.2 实现自定义验证控件443 10.3 本章总结451 第11章 在控件中使用嵌入资源452 11.1 在控件中嵌入资源的原理452 11.2 在控件中应用嵌入资源453 11.2.1 在控件中使用嵌入资源453 11.2.2 常用嵌入资源类型及用法455 11.3 浏览器常用工具460 11.3.1 httpwatch460 11.3.2 ie develper toolbar461 11.3.3 fiddler461 11.4 本章总结462 第12章 开发模板数据绑定控件463 12.1 asp.net模板属性控件机制463 12.1.1 模板属性介绍463 12.1.2 asp.net对模板控件的支持464 12.1.3 repeater控件模板实现机制解析466 12.2 自定义控件应用示例469 12.2.1 模板控件功能469 12.2.2 应用示例470 12.3 本章总结489 第13章 数据绑定和数据源控件490 13.1 数据绑定控件490 13.1.1 数据绑定控件概述490 13.1.2 asp.net对数据绑定控件的支持491 13.2 数据绑定控件示例应用501 13.2.1 控件实现功能501 13.2.2 应用示例502 13.3 数据源控件508 13.3.1 数据源控件概述508 13.3.2 asp.net对数据源控件的支持508 13.4 数据源控件示例应用515 13.4.1 控件实现功能515 13.4.2 应用示例516 13.5 本章总结522 第14章 扩展控件方案——gridview523 14.1 扩展控件概述523 14.2 任意定制gridview多表头523 14.2.1 功能概述523 14.2.2 代码实现524 14.3 固定gridview表头并增加滚动条支持527 14.3.1 功能概述527 14.3.2 代码实现528 14.4 本章总结533 第15章 自定义控件设计模式下编程汇总534 15.1 .net框架对设计时支持534 15.2 设计时元数据支持535 15.3 复杂属性序列化539 15.4 类型转换器539 15.5 属性编辑器540 15.6 设计模式可用基类介绍541 15.7 设计时对控件呈现的支持543 15.7.1 概述543 15.7.2 应用示例543 15.8 自动套用格式546 15.8.1 概述546 15.8.2 应用示例547 15.9 模板ui设计器551 15.10 智能操作列表552 15.10.1 概述552 15.10.2 应用示例552 15.11 控件设计器区域558 15.11.1 概述558 15.11.2 应用示例558 15.12 本章总结562 第16章 asp.net ajax控件开发——客户端563 16.1 asp.net ajax框架概述563 16.2 ajax library对客户端面向对象功能支持564 16.2.1 命名空间及type和function类565 16.2.2 接口类型568 16.2.3 类类型以及面向对象继承特征569 16.2.4 枚举类型570 16.2.5 反射功能570 16.3 ajax library中的常用类型571 16.3.1 ajax library对javascript基类型的扩展571 16.3.2 sys.stringbuilder类576 16.4 ajax library请求服务端和webservices577 16.4.1 sys.net命名空间中的类577 16.4.2 请求过程解析578 16.4.3 webrequest请求示例579 16.4.4 使用代理实现ajax调用服务端示例581 16.5 ajax library对控件客户端类开发的支持584 16.5.1 客户端控件基成员(类/接口)584 16.5.2 asp.net ajax控件客户端生命周期589 16.6 客户端控件示例应用592 16.7 调试和跟踪603 16.8 本章总结605 第17章 asp.net ajax控件开发——服务端606 17.1 asp.net ajax服务器控件概述606 17.2 ajax服务器控件607 17.2.1 ajax服务器控件607 17.2.2 asp.net ajax扩展程序控件612 17.3 asp.net ajax对服务器控件支持的基类612 17.3.1 ajax控件支持的基类612 17.3.2 ajax控件应用示例623 17.4 本章总结636

15,978

社区成员

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

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