Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mfc 添加颜色选择器工具栏,如mspaint';s_Mfc_Color Picker - Fatal编程技术网

Mfc 添加颜色选择器工具栏,如mspaint';s

Mfc 添加颜色选择器工具栏,如mspaint';s,mfc,color-picker,Mfc,Color Picker,我想在我的首选项对话框中添加一个类似于mspaint的颜色选择器。 这可以用MFC实现吗?我之所以使用VC6,是因为该项目在很久以前就开始了,现在它无法移植,所以我不能使用新的MFC类。这是绝对可能的。但是,除非您能找到一些现有代码,否则您可能需要自己实现所有者绘制来获得这种外观 有一个颜色选择器控件,CMFCColorPickerCtrl,我还没有用过。但我不相信它能满足你的需要。这个谜题有几个部分。首先是类似于多行工具栏的功能。第二个是在单击“编辑颜色”时调用的颜色选择器 第一个可以用多行

我想在我的首选项对话框中添加一个类似于mspaint的颜色选择器。


这可以用MFC实现吗?我之所以使用VC6,是因为该项目在很久以前就开始了,现在它无法移植,所以我不能使用新的MFC类。

这是绝对可能的。但是,除非您能找到一些现有代码,否则您可能需要自己实现所有者绘制来获得这种外观


有一个颜色选择器控件,
CMFCColorPickerCtrl
,我还没有用过。但我不相信它能满足你的需要。

这个谜题有几个部分。首先是类似于多行工具栏的功能。第二个是在单击“编辑颜色”时调用的颜色选择器

第一个可以用多行工具栏模拟(在一定程度上)。我似乎还记得VC6的CToolBar在多行工具栏方面存在一些问题,但我不确定这是否已经在service pack中得到了修复(看起来可能已经修复了,但我不确定)

如果您不喜欢这样(它看起来与原版不太一样),您将不得不创建自己的控件并将其放入CToolBar。只要您只想完全按照原样模拟控件,这就不会非常困难了——您基本上会向控件传递一个颜色编号数组,当单击时,它会发送一条带有所选颜色编号(或颜色编号索引,如果您愿意)的通知消息。只要你坚持使用固定的布局,这方面的数学计算就相当简单,但是如果你想支持更改布局,那么很快就会变得困难得多


对于第二部分,一个很好的起点可能是Hans Deitrich的。

我使用的是VC6,不幸的是,该项目绝对无法移植到较新的Visual Studio。@satuon:您有没有想过在问题的开头就添加类似的细节?正如你刚才所观察到的,它确实改变了答案。同样,你完全可以做到这一点。但是你可能得自己写。请注意,您发布的图像是功能区栏的一部分。如果您使用的是VC6,那么您甚至没有功能区控件可供使用。这意味着可能要做很多工作。当前版本的Paint(在Windows 7上)已经实现了颜色选择器,作为其功能区控件的一部分。在VC 6中,您无法访问功能区,创建一个功能区将是一项难以置信的工作量。我不认为任何第三方Ribbon控件库仍然支持VC6。但是,可以创建类似于早期版本的Paint中的颜色选择器工具栏。其实很简单。你能接受吗?是的,当然,我使用这个截图是因为我在Win7上。我其实不需要任何花哨的东西,当你点击它的时候,我可能会满足于一个显示CColorDialog(也适用于VC6:)的矩形,我只是问这个问题,以防有一个公共控件我不知怎么错过了。我也不记得是否有一个service pack可以修复多行工具栏,但是在VC 6中,将对话框嵌入工具栏的工作是完美的。如果我没记错的话,这也是功能区前版本的Paint创建颜色选择器的方式。即使在较旧的项目中,这也很容易实现。