关于DirectUI界面技术的误解

      好多人把DirectUI狂的很炫,甚至于要专门成为一门学术来进行研讨。其实,这样是给不是很懂控件开发的程序员们一种误解。熟悉windows开发的人都清楚。windows是消息驱动的,任何一个窗口。对话框,框架,甚至于按钮等全部是一个窗口。只要是窗口,就会有消息循环,有消息循环,就会接收并且可以处理大多数的windows消息。     比如,鼠标按下或者抬起会响应WM_LBUTTONDOWN WM_LBUTTONUP, 而如果要绘制内容(按钮的各种正常、按下、不可用状态),菜单的鼠标滑过、按下等等,所有的表现形式,必须在WM_PAINT 消息中,也就是 OnPaint处理函数中,进行绘制过程,c#,delphi等等语言都相同,无非就是封装的程度不同罢了。好多还不是很熟悉windows的程序开发人员一般会提出这样或那样的问题。为什么我绘制的图像一挡窗口就消失了。 读到这里您应该明白了。你不应该在OnPaint消息之外的任何地方进行绘制。否则当然会消失。     这里可能又有人会问了,那我想鼠标按下开始绘制矩形,鼠标移动后又绘制终点,难道不在这个时候绘制? 而要到OnPaint中绘制吗?感觉想不通。这个地方我希望入门的兄弟姐妹们好好思考一下。我们应该建立一个数据模型。比如任何业务处理中存储一些数据,而在绘制过程中(OnPaint)函数中来根据这些数据进行视觉表达。     至于DirectUI。和前面所讲的处理方式有所不同,说明白就是定义一些数据结构,来进行消息的处理与绘制过程。这些数据结构要定义好某个非窗口控制(按钮,滚动条等等)的显示区域,然后根据鼠标和键盘以及其他的一些需求来在预定的区域绘制不同的表现形式。至于DirectUI无非是注册了一个窗口类叫DirectUI罢了。并不是一种技术而已。我们其实接触这样的例子很多很多。全部的游戏内的窗口等都是。     我给大家具个例子。扑克牌的游戏大家一定都知道吧。鼠标点击某个扑克牌就会跳起火者出牌等。难道每一个扑克牌都是一个窗口??? 我们可以把扑克牌看成一个特殊的控制,比如按钮。鼠标移动到指定的区域,然后绘制相应的表现罢了。    

 这方面做得比较好的有 珠海优软 精灵画笔软件http://www.eusoftware.com/

这里还有一个例子 http://www.skinfeature.com/bbs/a/a.asp?B=3&ID=20

其他的类视的代码应该还比较多吧。大家可以baidu查找下载学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值