CreateCheckboxImageList -一个非mfc函数,用于创建主题化复选框的imagelist

介绍 复选框图像通常在树控件和 列表控件,其中使用一个实际的复选框控件 困难或将导致创建大量的子控件。 我使用的是早期版本的CreateCheckboxImageList 在我XHtmlTree 篇文章。在这个版本中,我删除了MFC依赖关系 并添加选项来指定复选框图像的大小。 感谢赵玉恒的出色表现 视觉风格 我使用它作为uxtheme.dll包装器的基础。 CreateCheckboxImageList API 下面是CreateCheckboxImageList函数: 隐藏,复制Code

//=============================================================================
//
// CreateCheckboxImageList()
//
// Purpose:     Create themed checkbox image list
//
// Parameters:  hDC              - device context for drawing
//              nSize            - height and width of images
//              crBackground     - fill color
//              bUseVisualThemes - TRUE = use themes if enabled
//
// Returns:     HIMAGELIST       - imagelist handle; NULL if create fails
//

的CreateCheckboxImageList函数创建一个图像列表 16幅图像,按此枚举定义: 隐藏,复制Code

enum { COLD_UNUSED_1 = 0,        // 0000
       COLD_UNCHECKED_NORMAL,    // 0001
       COLD_CHECKED_NORMAL,      // 0010
       COLD_TRISTATE_NORMAL,     // 0011

       COLD_UNUSED_2,            // 0100
       COLD_UNCHECKED_DISABLED,  // 0101
       COLD_CHECKED_DISABLED,    // 0110
       COLD_TRISTATE_DISABLED,   // 0111

       HOT_UNUSED_1,             // 1000
       HOT_UNCHECKED_NORMAL,     // 1001
       HOT_CHECKED_NORMAL,       // 1010
       HOT_TRISTATE_NORMAL,      // 1011

       HOT_UNUSED_2,             // 1100
       HOT_UNCHECKED_DISABLED,   // 1101
       HOT_CHECKED_DISABLED,     // 1110
       HOT_TRISTATE_DISABLED };  // 1111

前8张图片是“冷的”,后8张是“热的”。从 从冷到热,你可以或以8为状态。从正常转换到 禁用后,可以或状态用4。 在MFC应用程序中使用CreateCheckboxImageList 它很容易使用CreateCheckboxImageList与MFC通过简单 将HIMAGELIST附加到CImageList: 隐藏,复制Code

HIMAGELIST hil = 0;
hil = HDCheckboxImageList::CreateCheckboxImageList(pDC->m_hDC, 16,
        GetSysColor(COLOR_WINDOW), TRUE);
CImageList imagelist;    // usually this will be class variable
imagelist.Attach(hil);

CreateCheckboxImageList演示 CreateCheckboxImageList演示应用程序显示四个图像列表 不同的尺寸: 当启用可视主题复选框未选中时,复选框 没有创建视觉主题: 如何使用 步骤1 -添加文件 要将CreateCheckboxImageList集成到应用程序中,首先需要 添加以下文件到您的项目: CreateCheckboxImageList.cpp cpp文件应该设置为不使用预编译头 在Visual Studio。否则,您将得到错误 隐藏,复制Code

fatal error C1010: unexpected end of file while looking for precompiled header directive

步骤2 -添加头文件到源模块 在你想使用CreateCheckboxImageList的模块中, 包含头文件createcheckboximaglib .h。 步骤3 -添加代码 在OnInitDialog或其他初始化例程中, 添加创建imagelist的代码,然后在其中绘制适当的图像 DrawItem()或OnPaint()函数。 文件XVisualStyles.h包含头文件 uxtheme.h tmschema.h。这些文件可以在 Windows平台的SDK。通常,在这里我将插入下载url 对于平台SDK,但是它的位置经常变化,所以最好 让谷歌为你找到它: http://www.google.com/search?q=%22platform + sdk % 22。 修订历史 版本1.1 - 2008年4月15日 首次公开发行 版本1.0 - 2007年7月15日 嵌入在XHtmlTree 使用 这个软件被发布到公共领域。你可以自由使用它 以您喜欢的任何方式,除了您不能出售此源代码。如果你 修改或扩展它,请考虑张贴新的代码在这里为每个人 与你分享。本软件是“按原样”提供的,没有任何明示或暗示 保修。我不承担任何损害或损失的业务 此软件可能导致。 本文转载于:http://www.diyabc.com/frontweb/news758.html

原文地址:https://www.cnblogs.com/Dincat/p/13456095.html