windows程序设计 之 「COLORS3.C 」范例分析笔记

Gifsicle 1.95 命令行实战:38M GIF 压缩至 1M 的 3 种参数组合与效果对比 本文详细解析了Gifsicle 1.95命令行工具在GIF压缩中的实战应用,通过三组参数组合实现从38M到1M的极限压缩,并提供效果对比数据。涵盖优化级别、色彩量化和有损压缩等核心参数,帮助内容创作者在保持画质的同时大幅减小GIF体积,适用于社交媒体运营和技术文档编写。 阅读详情

/*----------------------------------------------
   COLORS3.C -- Version using Common Dialog Box
                (c) Charles Petzold, 1998
  ----------------------------------------------*/


#include <windows.h>
#include <commdlg.h>

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static CHOOSECOLOR cc ;


     /*COLORREF类型用来描绘一个RGB颜色.
        结构体类似于: RGB_value struct
                       { byte unused ;
                          byte blue ;
                          byte green ;
                          byte red;    };
       其中第一字节始终为 0,其它三个字节分别表示兰色、绿色和红色,刚好和 RGB 的次序相反。
       COLORREF类型变量值描绘一个颜色时对应于16进制的格式: 0x00bbggrr
       从COLORREF中获取RGB分量值:
       BYTE r = GetRValue(colorrrefRGB);
       BYTE g = GetGValue(colorrrefRGB);
       BYTE b = GetBValue(colorrrefRGB); */

     static COLORREF    crCustColors[16] ;

     cc.lStructSize         = sizeof (CHOOSECOLOR) ;    //结构大小
     cc.hwndOwner      = NULL ;                                 //对话框拥有者的窗口句柄
     cc.hInstance          = NULL ;                                 //自定义对话框模板资源载入内存后的句柄
     /* 如果CC_RGBINT标识符被设置时,该成员指定了对话框打开时默认的选择颜色.
        如果用户单击OK按钮,该成员指定了用户选择的颜色.*/

     cc.rgbResult           = RGB (0x80, 0x80, 0x80) ;
     /* 指向一个包含16个值的数组,该数组包含了对话框中自定义颜色的红、绿、蓝(RGB)值。*/
     cc.lpCustColors      = crCustColors ;
     /* CC_RGBINIT: 让对话框默认使用由rgbResult成员指定的颜色
        CC_FULLOPEN: 让对话框显示额外的控件以使用户创建自定义的颜色。
                                 如果该标识未设置,用户必须点击[自定义颜色]按钮才能显示自定颜色控件。*/

     cc.Flags                  = CC_RGBINIT | CC_FULLOPEN ;
     cc.lCustData           = 0 ;                                      //自定义程序数据
     cc.lpfnHook             = NULL ;                                //指向一个钩子程序
     /* 指向一个以空字符结束的字符串,字符串是对话框模板资源的名字,资源保存在能被hInstance成员识别的模块中 */
     cc.lpTemplateName = NULL ;

     /* 创建一个能使用户从中选择颜色的Color模态通用对话框。
         如果用户点击对话框中的OK按钮,返回值为非零值。
         CHOOSECOLOR结构中的rgbResult成员含有用户选择的颜色的RGB颜色值。
         如果用户取消或关闭Color对话框或错误出现,返回值为零。
         Color对话框不支持彩色调色板,对话框提供的颜色的选择仅限于系统颜色和这些颜色的混合值。 */

     return ChooseColor (&cc) ;
}


CHOOSECOLOR Structure

该结构包含了ChooseColor函数用于初始化颜色对话框的信息。在用户关闭对话框之后,系统返回关于用户选择的颜色信息。

语法

typedef struct {
                         DWORD lStructSize;
                         HWND hwndOwner;
                         HWND hInstance;
                         COLORREF rgbResult;
                         COLORREF *lpCustColors;
                         DWORD Flags;
                         LPARAM lCustData;
                         LPCCHOOKPROC lpfnHook;
                         LPCTSTR lpTemplateName;
} CHOOSECOLOR, *LPCHOOSECOLOR;


成员

lStructSize

指定结构的长度(字节)

hwndOwner

拥有对话框的窗口的句柄。该成员可以是任意有效的窗口句柄,或在对话框没有所有者时,可为NULL

hInstance

如果Flag成员设置了CC_ENABLETEMPLATEHANDLE 标识符时,该成员是一个包含了对话框模板的内存对象的句柄。

如果 CC_ENABLETEMPLATE 标识符被设置时,该成员是一个包含了对话框的模块句柄。

如果上述两个标识符都未被设置,则该成员被忽略。

rgbResult

如果CC_RGBINT 标识符被设置时,该成员指定了对话框打开时默认的选择颜色。如果指定的颜色值不在有效的范围内,系统会自动选择最近的颜色值。如果该成员为0或CC_RGBINT 未被设置,初始颜色是黑色。如果用户单击OK按钮,该成员指定了用户选择的颜色。

lpCustColors

指向一个包含16个值的数组,该数组包含了对话框中自定义颜色的红、绿、蓝(RGB)值。如果用户修改这些颜色,系统将用新的颜色值更新这个数组。如果要在多个ChooseColor函数中保存这个新的数组,你应该为该数组分配静态内存空间 。

Flags

一个可以让你初始化颜色对话框的位集。当对话框返回时,它用来这些标识符来标识用户的输入。该成员可以为下列标识符的任意组合。

CC_ANYCOLOR

对话框显示所有可用的基于基本颜色的颜色。

CC_ENABLEHOOK

激活由lpfnHook成员指定的钩子程序。该标识仅用于初始化对话框时。

CC_ENABLETEMPLATE

表示利用由hInstance 和 lpTemplateName 成员指定的对话框模板。该标识符仅用于初始化对话框。

CC_ENABLETEMPLATEHANDLE

表示hInstance成员标识一个包含了预加载的对话框模板的数据块。如果该标识被指定,系统会忽略 lpTemplateName 成员。该标识符仅用于初始化对话框。

CC_FULLOPEN

让对话框显示额外的控件以使用户创建自定义的颜色。如果该标识未设置,用户必须点击【自定义颜色】按钮才能显示自定颜色控件。

CC_PREVENTFULLOPEN

使自定义颜色按钮失效。

CC_RGBINIT

让对话框默认使用由rgbResult成员指定的颜色

CC_SHOWHELP

让对话框显示帮助按钮。

hwndOwner成员必须指定一个窗口,这个窗口接收对话框发送的HELPMSGSTRING注册的消息。

当用户单击帮助按钮时对话框发送这个消息。

CC_SOLIDCOLOR

让对话框仅显示基本颜色组成的纯色。

lCustData

指定应用程序自定义的数据,该数据会被系统发送给钩子程序。当系统发送WM_INITDIALOG消息给钩子程序时,消息的lParam参数是一个指向CHOOSECOLOR结构的指针。钩子程序可以利用该指针获得该成员的值。

lpfnHook

指向CCHookProc钩子程序的指针,该钩子可以处理发送给对话框的消息。该成员只在CC_ENABLEHOOK标识被设定的情况下才可用,否则该成员会被忽略。

lpTemplateName

指向一个NULL结尾的字符串,该字符串是对话框模板资源的名字。

结构信息

Header    Declared in Commdlg.h, include Windows.h
Minimum operating systems    Windows 95, Windows NT 3.1
Unicode    Implemented as ANSI and Unicode versions.

Windows Terminal 1.19 浅色主题优化:解决 PowerShell 语法高亮 3 处白色字体问题 本文详细介绍了如何优化Windows Terminal 1.19的浅色主题,解决PowerShell语法高亮中白色字体显示问题。通过调整$PSStyle和PSReadLine配置,以及修改Windows Terminal的settings.json文件,开发者可以显著提升代码可读性和工作效率。 阅读详情

相关推荐

MFC Windows 程序设计[六十五]之文件浏览对话框(附源码)

MFC是微软公司提供的一个类库(class libraries),用以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。有很多初学MFC的小伙伴们都觉得MFC比较难学,看书吧,看了就忘了,网上的一些教程又是写的含糊不清,故而学习起来很吃力...... 故此,本专栏亲自研究,实践,由易到难,层层深入,将调试过程中所遭所遇进行详细讲解,注意事项进行一一列举,希望能够帮助到各位初学MFC的小伙伴,避免走弯路,费时费力。

hnjzfwy的博客 343

C语言dialog函数,三、Windows通用对话框—只呼叫一个函数的Windows程序

程序11-7 COLORS3COLORS3.C/*-------------------------------------------------------------------------COLORS3.C -- Version using Common Dialog Box(c) Charles Petzold, 1998--------------------------------...

weixin_33439618的博客 258

MFC Windows 程序设计[四十一]之列表控件组(附源码)

MFC是微软公司提供的一个类库(class libraries),用以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。有很多初学MFC的小伙伴们都觉得MFC比较难学,看书吧,看了就忘了,网上的一些教程又是写的含糊不清,故而学习起来很吃力...... 故此,本专栏亲自研究,实践,由易到难,层层深入,将调试过程中所遭所遇进行详细讲解,注意事项进行一一列举,希望能够帮助到各位初学MFC的小伙伴,避免走弯路,费时费力。

hnjzfwy的博客 123

CColorDialog

CColorDialog dlg;dlg.m_cc.Flags|=CC_RGBINIT|CC_FULLOPEN;if(IDOK==dlg.DoModal()){    m_clr=dlg.m_cc.rgbResult;    //将dlg.m_cc.rgbResult获取到的颜色对话框中的颜色保存到变量m_clr中}第二行中,m_cc是CColorDialog的一个结构体成

小涛的专栏 2429

篮球比赛24秒计时器改造指南:用Multisim实现可调式倒计时系统

本文详细介绍了如何使用Multisim软件改造篮球比赛24秒计时器,实现可调式倒计时系统。从脉冲信号发生器到声光报警模块,提供了完整的电路设计方案和调试技巧,帮助开发者快速掌握数字电路设计的核心原理,提升体育电子设备开发效率。

wood5的博客 211

Zynq实战:如何用AXI4-Stream To Video Out实现HDMI视频输出(附时序调试技巧)

本文详细介绍了基于Zynq平台使用AXI4-Stream To Video Out IP核实现HDMI视频输出的工程化解决方案。内容涵盖系统架构设计、AXI4-Stream接口优化、异步FIFO配置、时序同步调试技巧等核心环节,特别针对1080p60视频输出提供具体参数配置和性能优化建议,帮助开发者快速构建稳定的视频处理系统。

sql99的博客 462

ChooseColor函数

创建一个用户选择的对话框。COLORREF DoSelectColour(HWND hwnd) { CHOOSECOLOR cc = {sizeof(CHOOSECOLOR)}; cc.Flags = CC_RGBINIT | CC_FULLOPEN | CC_ANYCOLOR; cc.hwndOwner = hwnd; cc.rgbResult = g_rgbB

谈笑风声,雨下成林 2311

从模型车到真实路口:基于YOLOv5-Lite与SORT的轻量化车流量检测系统实战

本文详细阐述了如何将基于YOLOv5-Lite与SORT的轻量化车流量检测系统从毕业设计原型部署到真实路口。文章聚焦于解决在嵌入式平台(如树莓派)上实现实时、稳定检测的工程挑战,涵盖数据采集、模型微调、系统集成及动态信号灯策略,为智能交通灯系统提供了实用的轻量化解决方案。

weixin_29179311的博客 125

MFC 通用对话框之颜色对话框

CColorDialog类封装了颜色对话框,此类允许您将颜色选择对话框合并到应用程序中。颜色对话框就像画家的调色板一样,可显示系统定义的颜色列表,用户可以从列表中选择或创建特定颜色。本文详细介绍了颜色对话框,并通过一个画线示例演示了颜色对话框的使用。

billliu66的博客 3656

PLC框架-1.3- 汇川PN伺服(3号报文)

本文以汇川IS620F伺服为例,详细介绍了FB_Servo_ToAxis功能块的应用方法。该功能块封装了MC_Home等轴控指令,实现使能、定位、点动、速度模式及回零等功能,支持转矩限制与显示,并具备行程统计和HMI单位自动切换特性。文章从硬件配置(PN网络连接、报文选择)、参数设置(控制模式、电子齿轮比),到软件实现(功能块调用、手动/自动控制逻辑)进行了系统说明,重点展示了绝对/相对定位、速度模式等典型应用场景的程序编写方法,为汇川伺服在Profinet网络下的工程应用提供了完整解决方案。

qq_34047402的博客 755

总目录- AutoSAR从入门到精通实战系列课程【持续更新中...】

欢迎大家订阅《AutoSAR入门和实战系列》,开始前博主先列出AutoSAR学习的大纲,同时这也可以作为大家学习AutoSAR的参考。想学习和及以及的同学们,可以订阅本博客,本博客一直持续更新中。如果想深入或从本质上学习和理解AutoSAR,打开此链接后,,点击左下方【立即订阅】订阅专栏!!!】......

4万+

MFC中颜色选择对话框的使用

MFC中CColorDialog类的使用 在MFC中,我们经常使用颜色对话框类CColorDialog。类CColorDialog支持在应用中使用颜色选择对话框。CColorDialog对象是一个拥有一个颜色列表的对话框。用户可以在列表中选择一种颜色,也可以定制颜色,在退出该对话框时,向应用告知选中的颜色。 一、构造方法:          CColorDialog(       

no_Talent的专栏 3192

ESP32-C3入门教程 环境篇③——VS Code IDE快速入门

文章目录一、安装Visual Studio Code二、安装扩展三、配置ESP-IDF 插件四、创建工程五、配置工程5.1 选择目标芯片5.2 项目配置六、编译工程七、固件分析七、固件下载八、串口日志九、单步调试 一、安装Visual Studio Code 下载并安装Visual Studio Code 二、安装扩展 左侧扩展 搜索espressif 点击安装 三、配置ESP-IDF 插件 按下F1按键 输入configure esp-idf extension EXPRESS,如果你

8302

windows程序设计第五版第九章 COLORS1.C程序

效果如图: 代码如下: /*----------------------------------------------------------------------------------------- COLORS1.C-- Color Using Scroll Bars (c)Charles Petsold, 1998 -------------------...

caiyilong的专栏 483

#systemverilog# 之 event region 和 timeslot 仿真调度(三)Verdi 辅助查看

通过今天的学习,我们知道:event region 是event sequence 的全集。我们打开了 event region feature 也就开启了event sequence 的功能。

那么菜的博客 1365

全网最全-DA14531-全球最小-BLE从入门到精通开发教程

本教程主要适用于低功耗产品,DA14531它体积小,非常适用于对体积敏感的设备,如无线可穿戴、传感器、助听器等设备。本文经过作者发大量时间来记录开发项目的调试方法,里面有许多笔者开发心得体会,旨在让读者工程师快速上手,减少摸索时间,提高软件质量。读者对象本文档主要适用以下工程师:嵌入式系统工程师单片机软件工程师IOT固件工程师BLE固件工程师。

hejinwu1314的博客 5137

Windows程序设计 滚动条

第九章 滚动条 P306 // /*---------------------------------------- COLORS1.C -- Colors Using Scroll Bars (c) Charles Petzold, 1998 ----------------------------------------*/ #inc

-----------------------------不要在跟自己无关的事情上浪费时间 775

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python程序语言二级教程_计算机二级教程python第一章 程序设计语言

一、程序设计语言(一)程序设计语言概述1、什么是程序设计?程序设计是计算机能能够理解和识别的用户操作的一种交互体;按照特定的规则组织计算机指令,使计算机能够独立自行进行各项运算处理。2、程序语言的发展机器语言、汇编语言、高级语言;其中机器语言和汇编语言是直接操作计算机硬件的编程语言,高级语言是用来表达计算机语法逻辑、接近自然语言,高级语言与计算机的硬件无关,高级语言是计算机程序设计语言。3、程序设...

weixin_39798943的博客 168

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Gifsicle 1.96 命令行实战:3种无损压缩方案对比,体积最高缩减60%

本文详细介绍了Gifsicle 1.96命令行工具的三种无损压缩方案,包括帧差异优化、调色板优化和智能有损压缩,帮助用户将GIF体积最高缩减60%。通过实测对比和高级技巧分享,为内容创作者提供高效的GIF优化解决方案。

weixin_30765577的博客 377

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

3分钟掌握Windows Terminal:从新手到高手的完整配置指南

你是否厌倦了Windows自带的简陋命令行界面?是否羡慕Linux用户那酷炫的终端体验?现在,微软带来的Windows Terminal将彻底改变你的命令行使用习惯。这个现代化的终端应用不仅外观精美,更提供了前所未有的自定义能力和生产力工具。 Windows Terminal是微软开源的下一代命令行工具,集成了PowerShell、Command Prompt、WSL、Azure Cloud S

gitblog_00582的博客 503

使用 C89 标准和 Windows API 编写的完整 GUI 俄罗斯方块游戏

TextOut(hdc, BOARD_WIDTH * BLOCK_SIZE + 20, 420, "ESC: 退出", 8);TextOut(hdc, BOARD_WIDTH * BLOCK_SIZE + 20, 360, "空格: 硬降", 8);TextOut(hdc, BOARD_WIDTH * BLOCK_SIZE + 20, 200, "分数:", 4);TextOut(hdc, BOARD_WIDTH * BLOCK_SIZE + 20, 220, "等级:", 4);

wuxiaobingandbob的专栏 988

Colors1程序

了解即可,不细细研究了# include<windows.h>LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK ScrollProc(HWND, UINT, WPARAM, LPARAM);//拥有输入焦点的滚动条的ID int idFocus;/* 可以查看一下定义: ypedef LRESULT (CAL

那又怎样的博客 558

C windows和linux截屏

截屏

weixin_46840784的博客 856

How to Change Error Message Colors in Windows 10 PowerShell Console

While this was a really easy way to change some of the settings, what if you want to do more extensive changes to your PowerShell console? For example, what if you want to change the text and backgrou...

weixin_30270561的博客 131

c语言windows背景着色,四、Windows子窗口控件的滚动条类别—给背景着色

当COLORS1定义它的窗口类别时,也为其显示区域背景定义了一个实心的黑色画刷:wndclass.hbrBackground = CreateSolidBrush (0) ;当您改变COLORS1的滚动条设定时,程序必须建立一个新的画刷,并将该新画刷句柄放入窗口类别结构中。如同使用GetWindowLong和SetWindowLong能得到并设定滚动条窗口消息处理程序一样,用GetClassWor...

weixin_29428137的博客 273

Windows 10/11下复现CVE-2020-17103:从cldflt.sys补丁分析到实战利用

本文深入解析Windows内核漏洞CVE-2020-17103的技术细节,提供从环境搭建到实战复现的完整指南。通过分析cldflt.sys驱动中的Minifilter机制和权限提升漏洞,帮助安全研究人员理解漏洞原理并掌握复现技巧,同时提供防御建议和扩展研究方向。

weixin_30565327的博客 425
上一篇: windows程序设计 「PopPad3」范例分析笔记
下一篇: windows程序设计之 「DevCaps2.C」范例分析 笔记
TypeCool
博客等级 码龄22年 58粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值