新人求教:处理CSliderCtrl控件的=wm_Customdraw消息遇到的问题

sdfdl 2006-08-15 07:06:13
源代码:
void CColorSlider::OnCustomdraw(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMCUSTOMDRAW sp=(LPNMCUSTOMDRAW)pNMHDR;

switch(sp->dwDrawStage)
{
case CDDS_PREPAINT:
{
*pResult=CDRF_NOTIFYITEMDRAW;
break;
};
case CDDS_ITEMPREPAINT:
{

if(sp->dwItemSpec==TBCD_CHANNEL)
{
CRect rect(sp->rc);
CBrush brush(RGB(255,0,0));
CWindowDC dc(this);
dc.SelectObject(brush);
dc.Rectangle(rect);
*pResult=0;
break;
};
};

};
}

问题:
1、TBCD_CHANNEL是滑动控件中间白色的滑轨部分,TBCD_THUMB是滑块,那么,我想替代鼠标形状和滑轨以外的那些灰色部分该用什么?

2、该程序运行效果不良:刚开始运行的时候在鼠标点击控件之前滑轨并没有上色,断点后,发现是初始化后又被覆盖。点击时滑块发现原来的位置并没于画上。而绘画了滑块之后完全不起作用,同样发现是被覆盖。是什么原因造成的,怎样修正?

3、看过网上一些例子,对
//
CDRF_NOTIFYITEMDRAW The control will notify the parent of any item-related drawing operations. It will send NM_CUSTOMDRAW notification messages before and after drawing items. This occurs when dwDrawStage equals CDDS_PREPAINT.

CDRF_NOTIFYPOSTPAINT The control will notify the parent after painting an item. This occurs when dwDrawStage equals CDDS_PREPAINT.

CDRF_NOTIFYSUBITEMDRAW Version 4.71. Your application will receive an NM_CUSTOMDRAW message with dwDrawStage set to CDDS_ITEMPREPAINT | CDDS_SUBITEM before each list-view subitem is drawn. You can then specify font and color for each subitem separately or return
//
所造成的效果并不是很明白,CDRF_NOTIFYPOSTPAINT试验的结果甚至是比CDRF_NOTIFYITEMDRAW更早执行?十分不解他们的区别。而CDRF_NOTIFYSUBITEMDRAW是list之类的控件所使用的吧?

希望各位前辈指点迷津,m(_ _)m 某谢了~
...全文
267 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanyaliji 2006-08-22
  • 打赏
  • 举报
回复
建议多贴一些代码上
sdfdl 2006-08-16
  • 打赏
  • 举报
回复
忘记了说明,CColorSlider是从CSliderctrl派生出来的类,只是如帖子所示处理了OnCustomdraw的代码
sdfdl 2006-08-16
  • 打赏
  • 举报
回复
其他代码就是MFC生成的对话框代码了……然后除了一个滑动控件没东西了…………
huaren801007 2006-08-16
  • 打赏
  • 举报
回复
可不可以多贴一些代码上来
huaren801007 2006-08-16
  • 打赏
  • 举报
回复
CDRF_NOTIFYPOSTPAINT试验的结果甚至是比CDRF_NOTIFYITEMDRAW更早执行?
我想这样的结果,可能是刚开始第一个Item的Paint的时候,dwDrawStage 并不等于CDDS_PREPAINT,而当Paint进行中时,系统把dwDrawStage 设置成CDDS_PREPAINT

可能会是这样的

15,979

社区成员

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

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