113E博章

       登录 /注册
首页 一算子网 发布
分类 :c++/vc

MFC动态创建控件的消息处理 C+/VC

[ 2008-7-30 22:42:00 | 发表者 : zihe ]

mfc动态创建控件的消息处理


  前些天有人在论坛里问在动态创建treectrl后怎么响应消息,于是便写了一点自己的心得,现整理如下。

  本例在view中动态创建一个listctrl并响应其nm_click消息,先写出动态创建的代码:

    新建一sdi工程,给view加上一个成员变量:
 clistctrl m_list;
    在view的oncreate中创建它:
 if(!m_list.create(ws_border |ws_child|ws_visible|lvs_icon |lvs_autoarrange|lvs_showselalways|lvs_editlabels,crect(10,10,310,210),this,id_listctrl))
 {
  trace0("failed to create listctrl window\n");
  return -1;
 }
 //添加一些项
 cstring str;
 for(int i=0;i<10;i++)
 { 
  str.format("item%d",i);
  m_list.insertitem(i,str);
 }
    其中的id_listctrl是这个控件的id,当然你可以直接用数值来表示,但为了程序清淅还是定义一个常量的好,在主菜单view->resource symbols弹出的对话框中点击new按钮,在name下面输入id_listctrl.

    创建完毕,编译链接后就可以运行了,但你怎么点击它都没反应,当然,因为我们还没写消息处理的代码。
  通常做法是手动写消息处理函数及消息映射,至少得三步:1,在头文件中定义消息处理函数的原型,2,在cpp中实现这个函数,3,在begin_message_map和end_message_map()之间写上消息映射。如果是单单处理一个消息的话那还可以忍受,消息一多的话不但麻烦还容易出错。
  
    所以我采取下面的方法:
    1.打开about对话框资源,放入一个listctrl控件到对话框中,并将其id设为id_listctrl.
    2.ctrl+w,把class name由原来的caboutdlg改为cxxxview,在左边的object ids中选择id_listctrl,这时右边会出现相应的通知消息,这时就可以跟平常一样双击添加消息映射了.
    嘿嘿,是不是跟在对话框里响应控件的消息一样很方便呀.
    有一点需要注意,只有当打开你加入控件的那个对话框资源编辑器的时候按ctrl+w时,class wizard中才会出现那个id_listctrl,还有发行时注意把对话框上的listctrl控件删掉.




上一篇:C#中调用Windows API的要点 C+/VC  
下一篇:游戏开发基础(9) C+/VC

浏览模式 : 显示全部 | 评论 : 0 | 排序 | 浏览 : 537

我要发表文章
回复标题:  
    Email :
* 请输入验证码
 
统计数据
文章数量 : 300300
评论次数 : 460
访问次数 : 19300300
在线人数 : 2093

附近文章
  • c+入门学习笔记指针篇 C+...
  • vc+中使用xml C+/VC
  • Serialization入门读物--...
  • 基于MFC的编写线程快速入...
  • C#中调用Windows API的要...
  • 游戏开发基础(9) C+/VC
  • bp网络算法对y=0.4sin(2*...
  • 结合ADO、ADOX和MFC的文档...
  • 读书笔记: 局域网中实现多...
  • gzip原理与实现 C+/VC
热门文章
  • 如...
  • Socket编程中select()的妙...
  • 如何在DLL中创建窗体(对话...
  • 重载赋值运算符 C+/VC
  • 展现TRACE之威力 C+/VC
  • ·用豪杰大眼睛制作照片v...
  • 一個簡單的錄音放音程序 ...
  • 用Socket接口实现网络异步...
  • MFC动态创建控件的消息处...
  • 实现服务器端的多线程SOC...
最新文章
  • 09/北京代办国内外文凭Q...
  • 09/北京代办国内外文凭Q...
  • 09/北京代办国内外文凭Q...
  • 股票技术不准了
  • 2009年元旦放假安排
最近评论
  • xueshanfh
  • 匿名
  • 匿名
  • 匿名
  • 匿名
  • 匿名Martha Jack
  • 匿名
  • Tom Moddy
  • 匿名Jimmy Adams
  • 匿名
 
 

Copyright (C) 一算子网 2006-2008, All Rights Reserved 京ICP备06020154号
服务QQ: 有问题请留言 留言邮箱pinhu530@sohu.com