中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 综合文章
Windows Programing OwnDarw Button中的DRAWITEMSTRUCT结构体~
作者:未知 时间:2005-07-27 21:55 出处:CSDN 责编:chinaitpower
              摘要:Windows Programing OwnDarw Button中的DRAWITEMSTRUCT结构体~

看本文先打开《Programming Windows程式开发设计指南》 好书~,ISBN:957-8239-73-4,原作者:Charles

Petzold  第一部分第九章“子视窗控制项”。
按钮类别共有10种,分别是:
        BS_PUSHBUTTON   
      BS_DEFPUSHBUTTON
      BS_CHECKBOX
      BS_AUTOCHECKBOX
      BS_RADIOBUTTON
      BS_3STATE
      BS_AUTO3STATE
      BS_GROUPBOX
      BS_AUTORADIOBUTTON
      BS_OWNERDRAW
我在学习这一章处看到了建立BS_OWNERDRAW样式的按钮,程序代码上书中都有,其中有一处有一结构体,

LPDRAWITEMSTRUCT,书中没有明确给出,后面不知道有没有给我,我还没有看呢
 查MSDN 如下:
typedef struct tagDRAWITEMSTRUCT {  ;// dis
  UINT  ;CtlType; //控件类型
  UINT  ;CtlID;  ; //控件的ID
  UINT  ;itemID;  ;//控件内部的ID号
  UINT  ;itemAction; //在什么情况下绘制控件
  UINT  ;itemState; //当前模式
  HWND  ;hwndItem; //控件名柄
  HDC  ; hDC; //设备句柄
  RECT  ;rcItem; //控件范围
  DWORD itemData; //数据
} DRAWITEMSTRUCT;   具体见MSDN,查DRAWITEMSTRUCT就可以了~

  此程序的重点代码就是 WM_DRAWITEM消息处,按下按钮时,它们就会产生WM_COMMAND讯息,那么

WM_DRAWITEM消息在什么时候会发生呢?只要系统需要重新绘制该控件就会发出该消息,如切换窗口,菜

单下拉等。还有一个坐标的定位~

“在处理WM_DRAWITEM讯息处理期间,lParam讯息参数是指向型态DRAWITEMSTRUCT结构的指标”

“FillRect用白色画刷抹掉按钮的内面,呼叫FrameRect在按钮的周围画上黑框,由此OWNDRAW便启动了

WM_DRAWITEM处理过程。”FillRect和FrameRect分别是两个API,

如果哪一个按纽得到焦点,“呼叫DrawFocusRect,在按钮的边界内画一个虚线的矩形。”

  感觉就是是使用OWNERDRAW 样式的button 时,DRAWITEMSTRUCT这个结构体必须深刻理解~


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有