在现代软件开发中,用户界面的美观性越来越受到重视。颜色选择器控件是实现用户自定义颜色功能的重要组件。本文将介绍一个扩展的颜色选择器控件,它不仅支持自定义颜色的设置和检索,还集成了常用的Windows颜色,并按照色调对颜色进行排序,以提供更直观的颜色选择体验。
这个扩展的颜色选择器控件新增了以下特性:
以下是新颜色选择器的外观:
要将XColourPicker集成到应用程序中,首先需要将以下文件添加到项目中:
然后使用资源编辑器向对话框添加一个按钮控件,并使用类向导将成员变量附加到该控件上。接下来,在对话框的头文件中包含头文件XColourPicker.h。然后将CButton定义替换为CXColourPicker。现在就可以开始使用XColourPicker了。
XColourPickerTest.exe演示程序展示了如何使用CXColourPicker。演示对话框在OnColourChange处理程序中处理颜色更改:
LRESULT CXColourPickerTestDlg::OnColourChange(WPARAM wParam, LPARAM lParam)
{
if (lParam == IDC_TEXT_COLOUR)
{
TRACE("IDC_TEXT_COLOUR\n");
}
else if (lParam == IDC_BACKGROUND_COLOUR)
{
TRACE("IDC_BACKGROUND_COLOUR\n");
}
if (m_ctlTextColour.GetColor() == m_ctlBackgroundColour.GetColor())
{
::MessageBox(m_hWnd,
"The text and background colours are identical.\r\n"
"The text will not be readable.",
"Unreadable Colours",
MB_ICONEXCLAMATION);
}
else
{
m_rgbText = m_ctlTextColour.GetColor();
m_rgbBackground = m_ctlBackgroundColour.GetColor();
}
m_ctlTextColour.SetColor(m_rgbText);
m_ctlBackgroundColour.SetColor(m_rgbBackground);
m_stcColourSample.SetTextColor(m_rgbText);
m_stcColourSample.SetBackgroundColor(m_rgbBackground);
return 0;
}