关于BCG中CBCGPButton的问题

pdexcl 2009-03-18 10:38:53
我在CBCGPDockingControlBar的子类中建立一个CBCGPButton。
头文件中声明:CBCGPButton m_constrainButton;
在cpp文件的OnCreate函数中创建如下:
const DWORD dwViewStyle = BS_AUTOCHECKBOX | WS_TABSTOP | WS_VISIBLE; //注意是CheckBox
if (!m_constrainButton.Create (_T("Constrain"), dwViewStyle, rectDummy, this, IDC_CONSTRAIN_CHECK))
{
TRACE0("Failed to create constrain check \n");
return -1; // fail to create
}
运行时这个CheckBox的背景总是黑色的,只能看到前面的方框,不管我怎么设置CBCGPButton的属性都不管用,比如我设置m_constrainButton.SetFaceColor(RGB(100,0,0),TRUE);改变里面的颜色,运行时没有任何反应,还是一片黑色,如果创建时改为Button类型时就没有问题,还有,如果我声明的是CButton也没有问题。但是这些都不是我想要的。哎,怎么办,这个问题好久了没有解决,大侠们帮帮忙!
...全文
909 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pdexcl 2009-03-19
  • 打赏
  • 举报
回复
没有其他办法了吗?只能处理WM_ERASEBKGND等消息吗?
pdexcl 2009-03-18
  • 打赏
  • 举报
回复
自己处理checkbox的WM_PRINT和WM_ERASEBKGND消息时,是不是所有的都需要自绘,包括前面的check小方框
fandh 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 abesky 的回复:]
公共控件的checkbox如何?不行可能需要自己处理checkbox的WM_PRINT和WM_ERASEBKGND消息自己处理一下背景
或者WM_CTLCOLOR消息
[/Quote]
建议试一下!
abesky 2009-03-18
  • 打赏
  • 举报
回复
公共控件的checkbox如何?不行可能需要自己处理checkbox的WM_PRINT和WM_ERASEBKGND消息自己处理一下背景
或者WM_CTLCOLOR消息
pdexcl 2009-03-18
  • 打赏
  • 举报
回复
它demo里面所有的程序我都看了,没有在DockingBar上放置CheckBox的例子,大多都是在对话框上放置CheckBox。
还有transparent属性我也设置过,背景倒是可以正常显示了,但是前面的check小方框看不见了。
CBCGPButton所有可能的public属性我都试过了,还是不行
allenhiman 2009-03-18
  • 打赏
  • 举报
回复
看看它的demo里如何做的。另外它不是开源的吗,看看它的相关代码。是不是要设定transparent属性
showxier 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pdexcl 的回复:]
自己处理checkbox的WM_PRINT和WM_ERASEBKGND消息时,是不是所有的都需要自绘,包括前面的check小方框
[/Quote]

是的,不过对于checkbox因为只是button中的其中一个类型, 所以处理WM_DRAWITEM和WM_ERASEBKGND更好.

checkbox与push按钮的重绘是一样的,但是多了选中和非选中, 可以先处理背景, 然后处理边框(4种常见状态), 再处理边框内背景, 然后再处理选中和非选中两个状态.

15,977

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧