CColorChooser 一个 IDE 风格的颜色选择器






4.70/5 (10投票s)
2001年10月5日
1分钟阅读

60452

2034
CColorChooser 一个 IDE 风格的颜色选择器
![]() |
![]() |
![]() |
动机
Visual Basic 肯定不是我的菜,但 Visual Basic IDE 确实有一些好的想法,应用程序可以从中受益。其中之一就是颜色选择器弹出窗口,它允许用户选择所需的颜色。我已经扩展了这个控件,包含了在新版 Visual Studio .NET IDE 中找到的网络颜色。
在最近的一个项目中,我需要设计一个颜色选择器,于是我向 VB IDE 寻求“帮助”。
设计
项目包含的窗口组件如下所示
由于设计的松散耦合,如果需要在另一个项目中单独使用,可以单独使用 CPaletteWnd
、CSysColorWnd
或 CWenColorWnd
。CColorChooser
包含所有功能,并通过 PostMessage
将特定的用户消息路由回父窗口。自定义颜色在应用程序中是持久的,并在 CColorChooser
的构造和销毁期间序列化(存储在注册表中)。
该项目涵盖了所有者绘制控件,并且需要创建一个自定义控件。
实现
- 将以下文件包含到项目中。
- 在要实现
CColorChooser
的地方,添加包含文件。#include "ColorChooser.h"
- 在类中创建一个
CColorChooser
的占位符class CYourView : public CView... { public: CColorChooser* m_pWndColorChooser;
- 在构造函数中初始化
CYourView:: CYourView() { m_pWndColorChooser = NULL;
- 我的示例在用户右键单击时弹出选择器。
void CPaletteTestView::OnRButtonUp(UINT nFlags, CPoint point) { if (m_pwndChooser == NULL) { ClientToScreen(&point); m_pwndChooser = new CColorChooser(point, this, m_crCurr); }
- 当用户选择或失去焦点时,我会销毁窗口并分别“捕获”所选颜色。
LRESULT CPaletteTestView::OnColorChanged(WPARAM wParam, LPARAM lParam) { m_crCurr = lParam; // Color is contained in lParam delete m_pwndChooser; m_pwndChooser = NULL; RedrawWindow(); return 0; } LRESULT CPaletteTestView::OnColorChooserClose(WPARAM wParam, LPARAM lParam) { delete m_pwndChooser; m_pwndChooser = NULL; return 0; }
ColorChooser.h & ColorChooser.cpp PaletteWnd.h & PaletteWnd.cpp WebColorWnd.h & WebColorWnd.cpp SysColorWnd.h & SysColorWnd.cpp
本文是未来一篇关于属性列表控件的文章的一小部分。
任何错误、增强或建议,请随时与我联系。