鱼C论坛

 找回密码
 立即注册
查看: 1977|回复: 0

[技术交流] 对话框(非模式)调色板①

[复制链接]
发表于 2018-7-11 22:56:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 qq1242009750 于 2018-9-10 20:17 编辑

今天给大家展示一个用对话框写的调色板,原理很简单,下面听我一一道来

首先发一张图,给大家看看效果吧!

调色板

调色板


功能说明:
1.使用三原色来调配颜色
2.三种原色都配备一个滚动条
3.滚动条下方是对应原色的色号,比如果R滚动条下面的显示20,那么当前红色的色号为20
4.右边的色板是三原色的组合
5.使用了自绘制按钮来实现操作说明对话框的弹出


下面我们来挪列一下要用到的消息和函数还有程序的思路:
※由于我们用的是对话框,所以滚动条和按钮都可以从工具栏拖拽到对话框中
1.由于我们用非模式对话框来模拟模式对话框,所以我们在创建主窗口的时候不要让主窗口显示出来,所以要把ShowWindow函数和WS_VISIBLE风格去掉
2.在主窗口创建消息里(WM_CREATE)创建一个非模式对话框,此对话框要用CreateDialog函数来创建,并用一个全局变量来接受它的返回值
3.既然用到了非模式对话框,那么就要在消息循环里抓取它的消息,因为消息循环里有主窗口的消息也有非模式对话框的消息,所以我们要用IsDialogMessage函数来判断消息的来源,消息循环里我们只派发和翻译主窗口的消息
4.应为原色的范围是 0 - 255,所以滚动条的范围要和原色一致(0 - 255) 可以用SetScrollInfo函数来设置
5.滚动条背景可以显示当前原色的颜色,当原色色号为0时显示黑色,色号用全局变量保存
6.改变滚动条的背景颜色可以用WM_CTLCOLORSCROLLBAR消息来改变,此消息要返回一个画刷句柄,此句柄就是滚动条背景色的句柄
7.当滚动条被拖动或两边按键被点击时,要能正确相应消息,滚动条被拖动或两边按键会发送WM_VSCROLL下的SB_THUMTRACK(拖动)、SB_LINEUP、SB_LINEDOWN消息
8.滚动条滚动完毕后也要改变对应的色号,并在滚动条的下方显示出来
9.每当我们有色号发生改变都要改变我们右边色板的颜色
10.因为右边的色板是用ListBox做的,所以要改变ListBox的背景色
11.改变LisBox的背景色可以用WM_CTLCOLORLISTBOX消息来改变,此消息要返回一个画刷句柄,此句柄就是ListBox背景色的句柄
12.自绘制按钮用到了一个WM_DRAWITEM的消息,可以在这个消息里面来绘制按钮
13.按钮按下时,背景变成红色,并弹出模态对话框


传送门:对话框(非模式)调色板②
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 21:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表