2 jujiawu1024 jujiawu1024 于 2016.02.06 19:45 提问

MFC中对于CColorDialog的修改
mfc

我希望同时设置前景色背景色,我用了CColorDialog,但是它只有一个颜色设置,我想修改成同时设置两个颜色,怎么改?

3个回答

caozhy
caozhy   Ds   Rxr 2016.02.06 20:44
已采纳

参考:
http://www.codeproject.com/Articles/13426/Custom-Color-Dialog-Box

你在InitDialog里面加上一个两个按钮,一个叫前景一个叫背景,切换的时候设置不同的颜色。

caozhy
caozhy 另外呢,codeproject上的代码都是可以完整下载的。虽然有点难,但是lz也可以下载下来研究下。
接近 2 年之前 回复
caozhy
caozhy 回复91program: 是的,回答以后就觉得有那么一点,所以我楼下又补充啦。你不是说你不看我的回答的么?其实看也没什么,就是拜托2个看全了。别看了一个丢了一个。
接近 2 年之前 回复
91program
91program 给一个那么复杂的实现,是不是显得你很高深!
接近 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.02.06 20:45

但是恐怕对你现在的水平有些难。只是告诉你有这样的方式可以自定义。

91program
91program   Ds   Rxr 2016.02.06 20:53

CColorDialog 调用后返回一个颜色索引值,可以用此值同时设置多个对象,不要说两个,3个、或者更多都没有问题。
窗体的前景色的设置方法,这个需要你掌握的知识点。然后用你获取的颜色索引替代下面代码中的 RGB 颜色。
为dialog添加消息WM_CTRLCOLOR的映射,在OnCtlColor函数中修改为如下代码:
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if(nCtlColor == CTLCOLOR_DLG || nCtlColor == CTLCOLOR_STATIC)
{
//pDC->SetTextColor(RGB(0,0,255));//字体色
pDC->SetBkColor(RGB(210,230,211));//字体背景色******
HBRUSH B = CreateSolidBrush(RGB(210,230,211)); //背景色
return B;
}
if(nCtlColor == CTLCOLOR_EDIT)
{
pDC->SetTextColor(RGB(0,0,255));//字体色
}
return hbr;

Csdn user default icon
上传中...
上传图片
插入图片