翻译 tellmenow
因为公共控件同操作系统核心是分离的,所以在使用任何一个公共控件前必须要初始化包含公共控件的DLL。在所有Windows版本里,也包括Windows CE,您可以调用void InitCommonControls(void)来装载动态库并注册许多公共控件类。该调用并不初始化日历控件、时间选择控件up/down控件、IP地址控件以及其它更新一些的公共控件。要初始化这些控件,使用函数
BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX lpInitCtrls);
该函数允许应用程序只装载和初始化选择的公共控件。该函数在Windows CE下很容易获得,因为只装载需要的控件可以减少对内存的影响。该函数唯一的参数是一个含有两个域的结构,该结构有一个尺寸域和一个包含标志集的域,标志集用来指出哪些公共控件需要被注册。表5-1给出了可以使用的标志及对应的控件。
表5-1:公共控件对应的标志
Flag
Control Classes Initialized
ICC_BAR_CLASSES |
Toolbar |
|
Status bar |
|
Trackbar |
|
Command bar |
ICC_COOL_CLASSES |
Rebar |
ICC_DATE_CLASSES |
Date and time picker
Month calendar control
|
ICC_LISTVIEW_CLASSES |
List view
Header control
|
ICC_PROGRESS_CLASS |
Progress bar control |
ICC_TAB_CLASSES |
Tab control |
ICC_TREEVIEW_CLASSES |
Tree view control |
ICC_UPDOWN_CLASS |
Up-Down control |
ICC_TOOLTIP_CLASSES |
Tool tip control |
ICC_CAPEDIT_CLASS |
Cap edit control |
一旦公共控件DLL被初始化,这些公共控件就可以像其它任何控件一样对待了。每个控件都有一个可定制风格标志集,用来配置控件的外观和行为。针对每个控件的消息会被发出,用来配置和操纵控件并让控件执行某些动作。标准Windows控件和公共控件之间的一个主要差别是事件通知或服务请求是通过WM_NOTIFY消息来发出,而标准控件则是通过WM_COMMAND消息发出的。同通过WM_COMMAND消息发出的通知相比,采用这种技术可以使通知能够包含更多的信息。另外,这种技术允许为每个使用该通知的控件进行扩展和改编WM_NOTIFY消息。
WM_NOTIFY消息在lParam参数中携带着指向NMHDR结构的指针,NMHDR定义如下:
typedef struct tagNMHDR {
HWND hwndFrom;
UINT idFrom;
UINT code;
} NMHDR;
hwndFrom是发送通知消息的窗口句柄。对属性页来说,就是属性页窗口。如果是控件发送通知的话,idFrom就是控件ID。最后一个code域包含的是通知码。同WM_COMMAND消息相比,虽然这个基本结构没有包含任何更多的信息,但它几乎总是可以扩展的,可以使用附加域来扩展它。通知码指出有什么样的附加域附加到了该通知结构里。
公共控件编程中另一个不同点是发给公共控件的大部分与控件相关的消息都有预定义的宏,用这些宏来发送消息,看上去像是应用程序在调用函数。所以不用像下面的语句那样使用LVM_INSERTITEM消息来给列表控件插入一个项,如
nIndex = (int) SendMessage (hwndLV, LVM_INSERTITEM, 0, (LPARAM)&lvi);
而是可以很容易地使用nIndex = ListView_InsertItem (hwndLV, &lvi)即可。
这两行语句没有功能上的差别。用宏地优势是清晰。宏和其它公共控件编程中需要的定义们一起都位于CommCtrl.h中。用这些宏的一个问题是编译器不能对参数执行类型检查,而假如宏是真正的函数的话是本应该执行的。这个问题也存在于SendMessage技术中,在SendMessage这种方式中参数必须是WPARAM和LPARAM类型,但消息缺乏类型检查也是比较常见的。总的来说,宏例程还是提供了更好的可读性。宏系统的一个例外是在命令条控件和命令带控件中进行宏调用的时候。在这些控件中,除了有大量的用宏包装的消息外,实际上还有许多真的函数。通常,我所说的消息是真正的消息,而不是它们对应的宏。这将有助于将消息或者宏同真正的函数区分开来。
分享到:
相关推荐
最新版windows graalvm-ce-java17-windows-amd64-22.2.0.zip最新版windows graalvm-ce-java17-windows-amd64-22.2.0.zip
最新版windows graalvm-ce-java11-windows-amd64-22.2.0.zip最新版windows graalvm-ce-java11-windows-amd64-22.2.0.zip
《Windows CE程序设计(中文版)》是一本深入探讨Windows CE平台应用程序开发的专业书籍,它为读者揭示了在Windows CE操作系统上构建高效、稳定且功能丰富的应用程序的技术与策略。这本书籍以其独特的外国人写作风格...
在深入探讨Windows CE程序设计之前,我们先要理解Windows CE是什么。Windows CE,全称Windows Embedded Compact,是微软推出的一个嵌入式操作系统,主要用于掌上设备、工业控制设备和汽车电子系统等。它是一个可裁剪...
《Windows CE程序设计》这本书是深入探讨嵌入式系统开发领域的宝贵资料,主要针对Windows CE这一操作系统进行详细讲解。Windows CE是一种轻量级、可裁剪的实时操作系统,广泛应用于各种嵌入式设备,如掌上电脑、工业...
《Microsoft Windows CE 程序设计》是一本深入探讨Windows CE平台应用程序开发的专业教程。Windows CE,全称为“Compact Edition”,是微软推出的一种嵌入式操作系统,主要用于掌上设备、工业自动化、汽车导航系统等...
《Windows CE程序设计》这本书是针对初学者和开发者的一份宝贵资源,主要涵盖了Windows CE操作系统的基础知识以及在该平台上进行程序开发的技术细节。Windows CE是一个嵌入式操作系统,广泛应用于移动设备、工业控制...
最新版windows graalvm-ce-java8-windows-amd64-20.3.0.zip最新版windows graalvm-ce-java8-windows-amd64-20.3.0.zip
3. **API和SDK**:详细介绍Windows CE的API(应用程序编程接口)和SDK(软件开发工具包),包括Win32 API的子集,以及如何使用它们进行程序编写。 4. **程序结构**:讨论Windows CE应用程序的基本结构,如WinMain...
5.1 通用控件编程 5.2 通用控件 5.2.1 命令栏 5.2.2 其他菜单控件 5.2.3 日历控件 5.2.4 时间日期选择器控件 5.2.5 列表视图控件 5.2.6 CapEdit控件 5.3 其他一些通用控件 5.4 不支持的通用控件 第6章 对话框和属性...
《Windows CE程序设计实务:使用eMbedded Visual Basic》这本书是李永隆编著的一本专业指南,由中国电力出版社出版,ISBN号为9787508309408。这本书主要聚焦于如何利用eMbedded Visual Basic(EVB)在Windows CE平台...
《Microsoft Windows CE 程序设计》是一本深入探讨Windows CE平台应用程序开发的专业书籍。Windows CE,全称为“Microsoft Windows Embedded Compact”,是微软推出的一种面向嵌入式系统的实时操作系统,广泛应用于...
graalvm-ce-java8-windows-amd64-21.0.0.2.zip
GraalVM(graalvm-ce-java17-windows-amd64-21.3.0.zip适用于Windows (amd64)), GraalVM 是一个高性能 JDK 发行版,旨在加速用 Java 和其他 JVM 语言编写的应用程序的执行,并支持 JavaScript、Ruby、Python 和...
本书分为四个部分,介绍了windows基础编程过渡到windowsCE编程,并详细剖析了其中的工作原理,最后还讲解了高级主题。 其中涉及到windowsCE的内存管理、进程与线程、串口通信及驱动原理以及外壳编程等等。
《Programming Windows CE 程序设计(第三版)》是一本深入探讨在Windows CE平台上进行程序开发的专业书籍。Windows CE是微软开发的一个嵌入式操作系统,广泛应用于掌上设备、工业控制、汽车电子等领域。本书作为第三...
《深入理解GraalVM:基于graalvm-ce-java11-windows-amd64-21.0.0.2.zip的探索》 GraalVM,全称为“GraalVM”,是一款高性能的运行时环境,它集成了Java虚拟机(JVM)、JavaScript引擎、Truffle框架以及自优化的...
最新版windows graalvm-ce-java11-windows-amd64-21.2.0.zip最新版windows graalvm-ce-java11-windows-amd64-21.2.0.zip
同时,由于Windows CE 5.0与桌面版Windows的相似性,使得开发者更容易上手,提高开发效率。 总结,Windows CE 5.0是嵌入式领域的重要操作系统之一,其灵活性、可裁剪性和广泛的硬件支持使得它在多个行业得到了广泛...
在"最新版windows graalvm-ce-java11-windows-amd64-21.3.0.zip"这个压缩包中,我们讨论的是针对Windows平台、基于AMD64架构的GraalVM社区版(Community Edition)的21.3.0版本,与Java 11兼容。 1. GraalVM概述:...