最近在写mfc,遇到了一些问题,参考了很多网上的例子,结合自己的理解,把主要解决思路记录如下:
很多时候在用写mfc对话框Dialog的时候,会有多个同类型控件响应同一个函数的需求。例如使用代码动态生成许多静态控件,这时就不能通过资源视图
界面对控件添加事件响应,或者在控件数量太多的时候,一个一个地添加事件响应也太过麻烦。mfc中提供了相应的范围映射函数可以一次性地为连续ID的控件添加事件响应函数:
ON_COMMAND_RANGE(IDC_STATIC0, IDC_STATIC10, OnStaticClicked)
此消息映射默认响应用户的左键单击动作;
ON_CONTROL_RANGE(STN_DBLCLK, IDC_STATIC0,IDC_STATIC10, OnStaticClicked)
此消息映射可以自定义消息类型,如这里的STN_DBCLK
是静态控件的双击响应消息ID(当然要想STATIC控件产生响应的话必须把其Notify属性设为 True),同理可以针对自己要处理的控类型选择自己需要的消息类型,个人感觉这个实用性更好。
他们的响应函数原型为void CDlgXXX::OnStaticClicked(UINT nID)
nID记录了响应点击的控件的ID,方便在响应函数里添加对应点的处理程序。
网友评论