ListCtrl重绘问题

marslycan 2019-05-05 05:10:57
最近在实现一个类似相机工厂的一个工程,用到了GenICam,然后希望能够让用户动态的添加一些常用参数到界面上,于是我想用ListCtrl,每个单元格子能够根据参数属性来动态生成控件,比如Edit,chekBox,下拉菜单,Spin控件及slider控件 (同一列,不同行,控件不同),于是找了一些第三方的类,但是发现Slider的实现貌似一个都没有,很是困惑,这个控件有啥特殊的嘛?
上图是我用的一个第三方的,改了改颜色的实现,带Spin控件的Edit应该通过重写一个Edit类也可以实现
求助各位大佬,Slider控件有什么特殊么。
...全文
203 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2019-05-06
  • 打赏
  • 举报
回复
上面回答 与你无关 ,搞错了
schlafenhamster 2019-05-06
  • 打赏
  • 举报
回复
在控件 内

void cTree::OnPaint()
{
CPaintDC dc(this);
// get size
CRect rc;
GetClientRect(&rc);
// Create a compatible memory DC
CDC memDC;
memDC.CreateCompatibleDC(&dc);
// Select a compatible bitmap into the memory DC
CBitmap bitmap;
bitmap.CreateCompatibleBitmap( &dc, rc.Width(), rc.Height());
HBITMAP oldBmp=(HBITMAP)memDC.SelectObject(&bitmap);
// Let the control draws the tree.
DefWindowProc(WM_PAINT, (WPARAM)memDC.m_hDC, 0 );
// 'and' to the background,
dc.BitBlt(0,0,rc.Width(),rc.Height(),&memDC,0,0,SRCAND);
// set back
memDC.SelectObject(oldBmp);
// free
DeleteObject(bitmap.m_hObject);
DeleteObject(memDC);
}

注意:
// Let the control draws the tree.
DefWindowProc(WM_PAINT, (WPARAM)memDC.m_hDC, 0 );
schlafenhamster 2019-05-06
  • 打赏
  • 举报
回复
1 创建
CSliderCtrl *CListCtrlEx::CreateCellSlider(int nItem)
{
CRect rc(0,0,1,1);
// CString cap;
// cap.Format("Slider %d",nItem);
CSliderCtrl *pSlider=0;
pSlider = new CSliderCtrl;
if(pSlider)
{
pSlider->Create(WS_CHILD | WS_VISIBLE|WS_BORDER| TBS_BOTH | TBS_NOTICKS , rc, this, nItem+2100);
m_SliderArray.Add(pSlider);
}
return pSlider;
}
2 移动
void CListCtrlEx::ChangeSliderPos()
{
int top=GetTopIndex();
CRect rcDefault(0,0,1,1);// see CreateCellButton()
CRect rcSub;
LockWindowUpdate();
for (int nItem=0 ; nItem < GetItemCount(); nItem++ )
{
CSliderCtrl *pSlider=(CSliderCtrl *)m_SliderArray[nItem];
if(nItem < top)
{// do not overlapped !
pSlider->MoveWindow(&rcDefault);
}
else
{
GetSubItemRect(nItem,2,LVIR_BOUNDS,rcSub);
pSlider->MoveWindow(&rcSub);
}
}
UnlockWindowUpdate();
}
marslycan 2019-05-06
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
个人猜想 可以参照 CCellEdit 等的实现方式 重写一个
哈哈 我就是有点想不通,为啥各种控件都有写的,就是没人写滑动条,有大雷在里面么~~准备参照原作者的结构写个Spin+Edit的,这个看起来比较容易上手~~
伊航 2019-05-06
  • 打赏
  • 举报
回复
想法不错。有动力。可以为每个单元格加个属性,表示需要哪种控件。
zgl7903 2019-05-05
  • 打赏
  • 举报
回复
个人猜想 可以参照 CCellEdit 等的实现方式 重写一个
marslycan 2019-05-05
  • 打赏
  • 举报
回复

15,979

社区成员

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

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