我做了一个拆分窗口,左边就一个CListView,右边的窗口显示左边被选中条目的详细内容。我的问题是如何在右边的窗口为当前活动窗口时,左边CListView原已被选中的条目就会失去原来的选中状态。如何才能让原来被选中的条目始终依然处于选中状态?谢谢指教MFCVC++
解决方案 »
- 紧急求助..在MFC中调用delphi的DLL 出现Unhandle exception in xx.exe
- CFileDialog 的问题 !
- 对话框下Lineto画虚线填充色如何透明?如何改变IDC_STATIC背景色?
- 请大家帮看下这样定义为什么会报错
- 请问如何返回二维数组啊???
- 如何把一个REPORT类型的ListCtrl的某一列隐藏?
- 【高分请教】如何设置窗口在第一次时也能居中?在线等,up有分。
- *** 为什么InternetConnection函数一个小时后才返回? ***
- 如何去看别人的代码最有效和简单?
- 在vc中如何使用ado,高分求教
- CString的问题
- MFC:Dialog中怎样捕获按钮按下和弹起的消息
另一种 重载 OnCustomdrawList
网上挺多,搜一下
我这样写哪里出现问题了?和原来一样,到另一个子窗口是,被选中的条目就失去选中
状态了void CMulFramesView::OnCustomDrawList ( NMHDR* pNMHDR, LRESULT* pResult )
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
//*pResult = 0;
if ( CDDS_ITEMPOSTPAINT == pLVCD->nmcd.dwDrawStage )
{
int nItem=static_cast<int>(pLVCD->nmcd.dwItemSpec);
if(GetListCtrl().GetItemState(nItem,LVIS_SELECTED))
{
pLVCD->clrTextBk=RGB(0,0,255);
}
*pResult = CDRF_NOTIFYITEMDRAW;
}
}
可以试试看下面思路:
1、将选中的条目记下来,比如写到loc里面。
2、选择位置改变时,用白色将原来的loc位置画一边(取消选中),再将loc变为新位置(非负整数),
再把新位置用蓝色画一边。第一次选中条目时不做取消选中操作。 这样即使焦点移到别处, loc的值没有变,所以显示就会保持