当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 原创]Windows Gdi入门初级应用(VC SDK) 好久没发贴了,今天手痒痒,发一个。
 

 

    摘要:ibm承诺今年年底发布代号为atlantic的开发平台 该开发平台基于eclipse3.0,并包含了为项目管理层、架构师、开发人员、测试人员以及其它管理者等各种角色量身定做的工具集,这里面也包括了所有希望了解业务关键(business-critical)的开发项目的进行情况的各种人员。 ibm的软件开发平台和微软公司5月份宣布的vsts(visual studio team system)类似......
 ·01、《tij》为何要读这本书    »显示摘要«
    摘要:惭愧!看到一篇文章是说应聘java程序员的时候,可能碰到的一些基础问题,几乎没有能答得上的。真是惭愧,所以决定一定要加强基础。以《thinking in java》这本书的名气,应该不错。 在这里记录一下学习过程,一来督促一下自己,二来可以给别人一些借鉴。 希望也在读这本书的人一起来探讨。 ......


原创]Windows Gdi入门初级应用(VC SDK)

原创]windows gdi入门初级应用(vc sdk) 

【程序编程相关:好的原程序做出好的软件

  【推荐阅读:高斯消元法的应用

【扩展信息:Oracle入门基本知识一点通

好久没发贴了,今天手痒痒,发一个.

gdi的绘图函数基本上都是有状态的,所有的函数都要求一个hdc类型的句柄.

这个hdc的获得有几个途径beginpaint,getwindowdc, getdc.他们的参数都只需要一个hwnd就差不多了.

记得调用了beginpaint后要调用endpaint进行清理,调用getwindowdc与getdc后要调releasedc进行清理.

在mfc代码中常常遇到的cdc cpaintdc cwindowdc cclientdc.在这里稍作解释.

cdc :例如用gdi画矩形要rectangle(hdc,...),而使用cdc则是dc.rectangle(...),由此可见cdc主要是把原本需要hdc作为参数的gdi函数封装了一下,hdc成了它的一个成员变量.

cpaintdc cwindowdc cclientdc:他们都是从cdc继承,分别是对上面所说的beginpaint,getwindowdc, getdc调用对进行封装(cpaintdc构造时调用beginpaint,析构时调用endpaint,其余同理).

beginpaint一般用在对wm_paint的响应函数中使用

getwindowdc可获得整个window的hdc,而getdc仅能获得客户区的hdc,区别就在于----

前者有效地绘制区域是整个窗口(边框.标题栏.客户区的总与).

后者有效地绘制区域仅限于客户区.

两者的坐标系都是相对坐标而非屏幕坐标,原点是(0,0).即以自己可绘制区域的左上角作为原点.

这里可以顺带的讲讲rect了,rect是一个结构,依次有4个成员left,top,right,bottom用来代表一个矩形区域.crect从rect继承,提供了一些常用的操作(例如说位移,缩小等等),其实就是改变4个成员的值.完全不用crect也可以.许多gdi函数都要求一个rect作为参数,或者类似的用(x,y,cx,cy)作参数,其实也就是一个rect变种,用了宽度与高度罢了.

基础知识介绍完毕,开始实例教程:

我们以如何绘制一个具有平面风格的状态栏为例:

首先从cstatusbar继承一个类:cstatusbarnew.(如果无法通过类向导做这件事,而你又对mfc的messagemap等等东西不熟悉,可以从cstatusbarctrl继承一个,待生成代码后,把所有的cstatusbarctrl改为cstatusbar)


...   下一页
 ·02、《tij》目录前的部分     »显示摘要«
    摘要: 在目录之前,主要有几个部分: 1、作者简介,真的是简介。 2、读者心声: 摘抄一小部分: 写得非常好的一本java 书我认为您的工作简直可以说“伟大”。我是芝加哥地区java 特别兴趣组的头儿,已在最近的几次聚会上推荐了您的书和web 站点。以后每个月开sig 会的时候,我都想把《thinking in java》作为基本的指导教材使用。一般来说,我们会每次讨论......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE