`
lingzantia
  • 浏览: 150077 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

[翻译]-Windows CE 程序设计 (3rd 版)--5.2 公共控件(八)

阅读更多

保存带区布局 翻译:tellmenow

命令带控件的可配置能力给程序员带来一个问题。用户重新排列带区后,希望定制的布局在应用程序下一次启动的时候能够恢复。通过使用下面的函数,可以轻易的达到目的:
BOOL CommandBans_GetRestoreInformation (HWND hwndCmdBands, UINT uBand, LPCOMMANDBANDSRESTOREINFO pcbr);
该函数将单个带区的信息保存到COMMANDBANDSRESTOREINFO结构中。该函数有两个参数,一个是命令带控件句柄,一个是将要查询的带区的索引值。下面的代码片段展示了如何查询命令带控件中每个带区的信息。
// Get the handle of the command bands control.
hwndCB = GetDlgItem (hWnd, IDC_CMDBAND);

// Get information for each band.
for (i = 0; i < NUMBANDS; i++) {
// Get band index from ID value.
nBand = SendMessage (hwndCB, RB_IDTOINDEX, IDB_CMDBAND+i, 0);

// Initialize the size field, and get the restore information.
cbr[i].cbSize = sizeof (COMMANDBANDSRESTOREINFO);
CommandBands_GetRestoreInformation (hwndCB, nBand, &cbr[i]);
}

上面的代码使用RB_IDTOINDEX消息,将带区ID转化成带区索引,以用于CommandBands_GetRestoreInformation。结构中的数据通常存储在系统注册表中。我将在第8章“文件和注册表”中讲解如何读写注册表数据。

当应用程序恢复的时候,应该从注册表中读取恢复信息,并在创建命令带控件的时候使用。
// Restore configuration to a command band.
COMMANDBANDSRESTOREINFO cbr[NUMBANDS];
REBARBANDINFO rbi;

// Initialize size field.
rbi.cbSize = sizeof (REBARBANDINFO);

// Set only style and size fields.
rbi.fMask = RBBIM_STYLE | RBBIM_SIZE;

// Set the size and style for all bands.
for (i = 0; i < NUMBANDS; i++) {
rbi.cx = cbr[i].cxRestored;
rbi.fStyle = cbr[i].fStyle;

nBand = SendMessage (hwndCB, RB_IDTOINDEX, cbr[i].wID, 0);
SendMessage (hwndCB, RB_SETBANDINFO, nBand, (LPARAM)&rbi);
}

// Only after the size is set for all bands can the bands
// needing maximizing be maximized.
for (i = 0; i < NUMBANDS; i++) {
if (cbr[i].fMaximized) {
nBand = SendMessage (hwndCB, RB_IDTOINDEX, cbr[i].wID, 0);
SendMessage (hwndCB, RB_MAXIMIZEBAND, nBand, TRUE);
}
}

上面的代码假设命令带控件已经按照默认配置创建。在实际应用中,尺寸和风格的恢复信息用于最初创建控件的时候。在那种情况下,剩余的将根据COMMANDBANDSRESTOREINFO结构中fMaximized域的状态来决定是否最大化带区。只有在所有的带区被创建和适当的调整尺寸后,才做上面代码中的最后一步。

该系统对保存和恢复带区的布局有一个限制,就是您没有办法判断带区在控件中的顺序。带区索引不能提供可靠的信息,因为经过用户几次重新安排带区后,索引值既不连续也不是按任何定义的顺序。解决该问题的唯一方式是强制排列带区,这样用户就不能重新排列带区。通过设置RBS_FIXEDORDER风格,可以达到这个目的。这样可以解决这个问题,但如果用户想要一个不同的顺序,就不能够给用户提供帮助了。在本节最后的例子程序中,我使用带区索引值来猜测顺序。但这个方法不能保证一定能有效。

分享到:
评论

相关推荐

    最新版windows graalvm-ce-java17-windows-amd64-22.2.0.zip

    最新版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 graalvm-ce-java11-windows-amd64-22.2.0.zip

    Windows CE程序设计(中文版)

    《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最新版windows graalvm-ce-java8-windows-amd64-20.3.0.zip

    Microsoft Windows CE 程序设计.rar

    《Microsoft Windows CE 程序设计》是一本深入探讨Windows CE平台应用程序开发的专业教程。Windows CE,全称为“Compact Edition”,是微软推出的一种嵌入式操作系统,主要用于掌上设备、工业自动化、汽车导航系统等...

    Windows CE程序设计.pdf

    《Windows CE程序设计》这本书是针对初学者和开发者的一份宝贵资源,主要涵盖了Windows CE操作系统的基础知识以及在该平台上进行程序开发的技术细节。Windows CE是一个嵌入式操作系统,广泛应用于移动设备、工业控制...

    PDF->WindowsCE程序设计

    PDF到Windows CE程序设计是一个涉及移动设备开发的重要主题。Windows CE是一种嵌入式操作系统,广泛应用于掌上电脑、工业设备和车载系统等。本资源提供了一本关于如何在Windows CE平台上进行程序设计的PDF电子书,这...

    ut-890 485-usb能用驱动(适用于Windows CE 4.2-5.2 ARM XScale Processor )

    标题和描述中提到的"UT-890 485-USB能用驱动"是一款专为基于Windows CE操作系统,特别是版本4.2至5.2,并且在ARM架构的XScale处理器上运行的设备设计的驱动程序。这款驱动允许UT-890 485-USB模块在这些设备上正常...

    graalvm-ce-java8-windows-amd64-21.0.0.2.zip

    graalvm-ce-java8-windows-amd64-21.0.0.2.zip

    《Windows CE程序设计实务:使用eMbedded Visual Basic》随书光盘

    《Windows CE程序设计实务:使用eMbedded Visual Basic》这本书是李永隆编著的一本专业指南,由中国电力出版社出版,ISBN号为9787508309408。这本书主要聚焦于如何利用eMbedded Visual Basic(EVB)在Windows CE平台...

    用C语言开发手机软件-Windows CE 6.0开发者参考

    1.3 第一个WindowsCE应用程序 1.3.1 创建第一个WindowsCE应用程序 1.3.2 运行程序 1.3.3 出了什么问题 1.4 Hello2程序 1.5 剖析窗口应用程序 1.5.1 窗口 1.5.2 窗口类 1.5.3 窗口过程 1.5.4 消息的生命期 1.5.5 注册...

    GraalVM(graalvm-ce-java17-windows-amd64-21.3.0.zip)

    GraalVM(graalvm-ce-java17-windows-amd64-21.3.0.zip适用于Windows (amd64)), GraalVM 是一个高性能 JDK 发行版,旨在加速用 Java 和其他 JVM 语言编写的应用程序的执行,并支持 JavaScript、Ruby、Python 和...

    1-Windows CE的设计目标.rar_windows ce开发资料

    6. **兼容性**:尽管Windows CE是为嵌入式设备设计的,但它与传统的Windows桌面系统有一定的兼容性,比如文件系统、应用程序接口(API)等,这有助于降低开发成本并提升用户体验。 7. **网络和通信**:Windows CE...

    最新版windows graalvm-ce-java11-windows-amd64-21.2.0.zip

    最新版windows graalvm-ce-java11-windows-amd64-21.2.0.zip最新版windows graalvm-ce-java11-windows-amd64-21.2.0.zip

    Programming Windows CE 程序设计(第三版)

    《Programming Windows CE 程序设计(第三版)》是一本深入探讨在Windows CE平台上进行程序开发的专业书籍。Windows CE是微软开发的一个嵌入式操作系统,广泛应用于掌上设备、工业控制、汽车电子等领域。本书作为第三...

    graalvm-ce-java11-windows-amd64-21.0.0.2.zip

    《深入理解GraalVM:基于graalvm-ce-java11-windows-amd64-21.0.0.2.zip的探索》 GraalVM,全称为“GraalVM”,是一款高性能的运行时环境,它集成了Java虚拟机(JVM)、JavaScript引擎、Truffle框架以及自优化的...

    嵌入式操作系统原理 -Windows CE 5.0-微软嵌入式教学.rar

    同时,由于Windows CE 5.0与桌面版Windows的相似性,使得开发者更容易上手,提高开发效率。 总结,Windows CE 5.0是嵌入式领域的重要操作系统之一,其灵活性、可裁剪性和广泛的硬件支持使得它在多个行业得到了广泛...

    最新版windows graalvm-ce-java11-windows-amd64-21.3.0.zip

    在"最新版windows graalvm-ce-java11-windows-amd64-21.3.0.zip"这个压缩包中,我们讨论的是针对Windows平台、基于AMD64架构的GraalVM社区版(Community Edition)的21.3.0版本,与Java 11兼容。 1. GraalVM概述:...

    Microsoft Windows CE 程序设计

    《Microsoft Windows CE 程序设计》是一本深入探讨Windows CE平台应用程序开发的专业书籍。Windows CE,全称为“Microsoft Windows Embedded Compact”,是微软推出的一种面向嵌入式系统的实时操作系统,广泛应用于...

    Windows CE 程序设计

    《Windows CE程序设计》是一本深入探讨在Windows CE操作系统上进行程序开发的指南。Windows CE是一种嵌入式操作系统,常用于掌上设备、工业设备和汽车电子系统等。本教材旨在帮助开发者理解和掌握如何利用Windows CE...

Global site tag (gtag.js) - Google Analytics