ListCtrl控件选中某一项后,如何不出现蓝色的背景条啊?

hjcy_2002 2004-11-26 05:26:08
ListCtrl控件选中某一项后,如何不出现蓝色的背景条啊?高手帮忙啊
...全文
171 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hjcy_2002 2004-11-29
顶啊
回复
hjcy_2002 2004-11-29
///////////////////////////////////////////////////////////////////////////////////////////////
// This file is for CyberPhone3.5, It just get bitmap info and creat window region by bitmap.
// --------------------------------------------------------------------------------------------
// File: AdvancedBitmap.cpp
// Comment:
// This file contains implementation of the CAdvancedBitmap class.
// function.
// Change Log:
// Revision Status Actor Date Action
// 1.0 Exp LiKai 2001/012/25 Create this file.
///////////////////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
//#include "PhoneClt.h"
#include "AdvancedBitmap.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
///////////////////////////////////////////////////////////////////////////////////////////////
// CAdvancedBitmap class Construction
///////////////////////////////////////////////////////////////////////////////////////////////
CAdvancedBitmap::CAdvancedBitmap()
{
m_nWidth = 0;
m_nHeight = 0;
m_bLoadFromFile = FALSE;
m_hBitmap = NULL;
}
///////////////////////////////////////////////////////////////////////////////////////////////
// CAdvancedBitmap class Destruction
///////////////////////////////////////////////////////////////////////////////////////////////
CAdvancedBitmap::~CAdvancedBitmap()
{
if(m_hBitmap != NULL)
{
::DeleteObject(m_hBitmap);
}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////
//// Function: CAdvancedBitmap::LoadBitmap(UINT nIDResource)
////---------------------------------------------------------------
//// Parameter: 1.
//// Description: load a bitmap from Resource
//// Return: BOOL
//// Author: Kai Li
//// Build time: 2001/12/26 08:50:30
//////////////////////////////////////////////////////////////////////////////////////////////////////

BOOL CAdvancedBitmap::LoadBitmap(UINT nIDResource)
{
HBITMAP hBitmap = NULL;

if(TRUE == m_bLoadFromFile) //Load bitmap from file
{
hBitmap = (HBITMAP)LoadImage(NULL,(LPCTSTR)nIDResource,IMAGE_BITMAP,0,0,
LR_CREATEDIBSECTION | LR_LOADFROMFILE | LR_DEFAULTCOLOR);
}
else //Load bitmap from Resource
{
hBitmap = (HBITMAP)LoadImage( AfxGetResourceHandle(),(LPCTSTR)nIDResource,
IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION);
}

if(NULL == hBitmap)
{
return FALSE;
}
Detach();
Attach(hBitmap);

DIBSECTION dibs;
BITMAPINFOHEADER &bmpInfo = dibs.dsBmih;

GetObject(sizeof(dibs), &dibs);

//Get the size of the loaded bitmap
m_nWidth = bmpInfo.biWidth;
m_nHeight = bmpInfo.biHeight;
m_hBitmap = hBitmap;
return TRUE;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//// Function: CAdvancedBitmap::LoadBitmap(LPCTSTR lpszResourceName)
////---------------------------------------------------------------
//// Parameter: 1.
//// Description: load a bitmap from file
//// Return: BOOL
//// Author: Kai Li
//// Build time: 2001/12/26 08:50:30
//////////////////////////////////////////////////////////////////////////////////////////////////////

BOOL CAdvancedBitmap::LoadBitmap(LPCTSTR lpszResourceName)
{
BOOL bRet = FALSE;
m_bLoadFromFile = TRUE;
bRet = LoadBitmap((UINT)lpszResourceName);
m_bLoadFromFile = FALSE;
return bRet;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
//// Function: CMainFrame::CreateRegion(HBITMAP hBitmap,int nXSrc,int nYSrc,int nWidth,int nHeight)
////---------------------------------------------------------------
//// Parameter: 5.
//// Description: Create Region by a bitmap, this fuction can control region size and return Region handle(HRGN)
//// Return: HRGN
//// Author: Kai Li
//// Build time: 2001/12/26 08:40:10
//////////////////////////////////////////////////////////////////////////////////////////////////////

HRGN CAdvancedBitmap::CreateRegion(BOOL bIsRegulation,int nXSrc,int nYSrc,int nWidth,int nHeight)
{
HRGN rgnTarget = NULL;
HRGN rgnTemp = NULL;

int nx = 0;
int ny = 0;
int nRgnStartXPos = 0;
int nRgnWidth = m_nWidth;
int nRgnHeight = m_nHeight;
COLORREF MaskColor;

BOOL bFirstCreateRgn = TRUE;
BOOL bRetain = FALSE;

CDC dcMem;
CBitmap *pbmpOld;

if(nWidth > 0 && nHeight > 0)
{
nRgnWidth = nWidth;
nRgnHeight = nHeight;
}

if(FALSE == bIsRegulation)
{
dcMem.CreateCompatibleDC(NULL);
pbmpOld = dcMem.SelectObject(this);

MaskColor = dcMem.GetPixel(0,0);

for(ny = nYSrc; ny < nYSrc + nRgnHeight; ny++)
{
for(nx = nXSrc; nx <= nXSrc + nRgnWidth; nx++)
{

if(dcMem.GetPixel(nx,ny) == MaskColor || nx == nXSrc + nRgnWidth)
{
if(TRUE == bRetain)
{
bRetain = FALSE;
rgnTemp = CreateRectRgn(nRgnStartXPos - nXSrc, ny - nYSrc, nx - nXSrc, ny - nYSrc + 1);
if(TRUE == bFirstCreateRgn)
{
rgnTarget = rgnTemp;
bFirstCreateRgn = FALSE;
}
else
{
CombineRgn(rgnTarget, rgnTarget, rgnTemp, RGN_OR);
if(rgnTemp != NULL)
{
::DeleteObject(rgnTemp);
rgnTemp = NULL;
}
}
}
}
else
{
if(FALSE == bRetain)
{
bRetain = TRUE;
nRgnStartXPos = nx;
}
}
}
}
dcMem.SelectObject(pbmpOld);
if(rgnTemp != NULL)
{
::DeleteObject(rgnTemp);
rgnTemp = NULL;
}
dcMem.DeleteDC();
}
else
{
rgnTarget = CreateRectRgn(0, 0, nRgnWidth,nRgnHeight);
}

return rgnTarget;
}

///////////////////////////////////////////////////////////////////
//// Function: CAdvancedBitmap::GetDlgRGB( )
////---------------------------------------------------------------
//// Parameter: 1. int nX
//// 2. int nY
//// Description: Get RGB from Point(nX,nY)
//// Return: COLORREF
//// Author: Kai Li
//// Build time: 2001/12/26 ¤W¤È 10:58:35
///////////////////////////////////////////////////////////////////
COLORREF CAdvancedBitmap::GetDlgRGB(int nX,int nY)
{
COLORREF ColorRGB;

CDC dcMem;
CBitmap *pbmpOld;

dcMem.CreateCompatibleDC(NULL);
if(this->GetSafeHandle() != NULL)
{
pbmpOld = dcMem.SelectObject(this);

ColorRGB = dcMem.GetPixel(nX,nY);
dcMem.SelectObject(pbmpOld);
}
dcMem.DeleteDC();
return ColorRGB;
}
回复
wlwlxj 2004-11-27
SetExtentStyle试一下
回复
henryzc 2004-11-27
顶一下,还有怎么才能改变选中的条目在失去焦点后的颜色呢?
回复
rainfall19831109 2004-11-27
刚才打多了
LVS_EX_FULLROWSELECTION
应该改为
LVS_EX_FULLROWSELECT
回复
rainfall19831109 2004-11-27
设置一下ListCtrl的ExtendStyle
例如,先定义一个CListCtrl的变量:m_listctrl
然后,DWORD exstyle=m_listctrl.GetExtendStyle();m_list.SetExtendStyle(exstyle|LVS_EX_FULLROWSELECTION);
回复
hjcy_2002 2004-11-27
郁闷啊
回复
hjcy_2002 2004-11-27
好像没有什么反应啊
回复
fengqinggao 2004-11-26
pYourListCtrl->SetItem(iItemIndex, 0, LVIF_STATE, NULL, 0, LVIS_FOCUSED, LVIS_FOCUSED, 0);

这是使选中的Item只有焦点(即在该Item四周有一个虚线框),不高亮显示的方法;
如果连焦点都不要的话,将LVIS_FOCUSED该为0就应该可以
回复
hundlom 2004-11-26
你到www.vckbase.com里去找找,
那里有一文章作者子类化ListCtrl了,你拿过来都可以直接用
郁闷,此刻我这里打不开这个网站了...
回复
hjcy_2002 2004-11-26
自己顶啊
回复
960379 2004-11-26
这个可以有一个属性来控制的。具体计不清楚了,试一下吧,
alwaysshowselecetion????
实在不行,通过setitemstate函数也可以实现。
回复
danyueer 2004-11-26
子类化,重载OnLButtonDown,用HitTest判断点中的项并进行相应处理,然后直接返回,不执行默认的OnLButtonDown函数,就可以了。
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-11-26 05:26
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……