怎样做一个自画的CListCtrl控件?

Eagle_999 2000-09-11 02:15:00
我想做一个子项编辑的CListCtrl,自定义选定项的颜色设置?我该怎样做?
另外,怎样动态改变CButton的字体颜色?
这里先行谢过了!!!!
...全文
134 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
oceancat 2000-09-12
  • 打赏
  • 举报
回复
我现在也正在做
呵呵,不过刚刚做,你命好。
先从CListCtrl继承个类
然后将窗口属性加上自画
重载drawitem
如下
还有不明白的
来信b_cw@yahoo.com
自画很累,不如下载控件。
void CMyList::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
int count;
char str[6];
m_widthcollumn=0;
for (count=1;count<=m_columnnumber;count++)
{
sprintf(str,"item %d",lpDrawItemStruct->itemID);
CDC * pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
pDC->SetBkMode(OPAQUE);
if (count>1)
{
m_rect=lpDrawItemStruct->rcItem;
m_rect.left=m_widthcollumn;
m_rect.right=m_rect.left+this->GetColumnWidth(count-1);
m_widthcollumn=m_rect.right;
}
else
{
m_rect=lpDrawItemStruct->rcItem;
m_rect.right=m_rect.left+this->GetColumnWidth(count-1);
m_widthcollumn=m_rect.right;
}
if (count==2)
{
pDC->Rectangle(m_rect);
m_bitmap=::LoadBitmap(::AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP1));
CDC pCompDC;
pCompDC.CreateCompatibleDC(pDC);
pCompDC.SelectObject(m_bitmap);
pDC->BitBlt(m_rect.left+1,m_rect.top+1,12,12,&pCompDC,0,0,SRCCOPY);
m_rect.left=m_rect.left+16;
m_rect.bottom--;
m_rect.top++;
pDC->DrawText("Check it",5,m_rect,DT_LEFT);

}
else
{
pDC->Rectangle(m_rect);
m_bitmap=::LoadBitmap(::AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP2));
CDC pCompDC;
pCompDC.CreateCompatibleDC(pDC);
pCompDC.SelectObject(m_bitmap);
pDC->BitBlt(m_rect.left+1,m_rect.top+1,12,12,&pCompDC,0,0,SRCCOPY);
m_rect.left=m_rect.left+16;
m_rect.bottom--;
m_rect.top++;
pDC->DrawText(str,6,m_rect,DT_LEFT);
}
}
}
Eagle_999 2000-09-12
  • 打赏
  • 举报
回复
能具体一点吗?
我的英语水平有限?能说一下吗?
怎样取得CButton的CDC呢?
谢谢?
playpcgame 2000-09-11
  • 打赏
  • 举报
回复
1.www.codeguru.com/listview,好好看看。
2.CButton也是窗口,取得CDC,然后SetTextColor( COLORREF crColor );
目录 (1) 如何通过代码获得应用程序主窗口的 指针? 5 (2) 确定应用程序的路径 6 (3) 如何在程序中获得其他程序的 图标? 6 (4) 获得各种目录信息 7 (5) 如何自定义消息 8 (6) 如何改变窗口的图标? 8 (7) 如何改变窗口的缺省风格? 8 (8) 如何将窗口居中显示? 9 (9) 如何让窗口和 MDI窗口一启动就最大化和最小化? 10 (10) 如何限制窗口的大小? 10 (11) 如何使窗口不可见? 10 (12) 如何创建一个字回绕的CEditView 10 (13) 如何使程序保持极小状态? 11 (14) 移动窗口 11 (15) 通用控件的显示窗口 12 (16) 重置窗口的大小 12 (17) 如何单击除了窗口标题栏以外的区域使窗口移动 12 (18) 如何改变视窗的背景颜色 14 (19) 如何改变窗口标题 15 (20) 如何防止主框窗口在其说明中显示活动的文档名 17 (21) 如何获取有关窗口正在处理的当前消息的信息 17 (22) 如何在代码中获取工具条和状态条的指针 18 (23) 如何使能和禁止工具条的工具提示 18 (24) 如何创建一个不规则形状的窗口 19 (25) 如何获取应用程序的 实例句柄? 23 (26) 如何编程结束应用程序? 23 (27) 如何创建和使用无模式对话框 24 (28) 如何防止主框窗口在其说明中显示活动的文档名 26 (29) 如何在代码中获取工具条和状态条的指针 27 (30) 怎样加载其他的应用程序? 27 (31) 如何在代码中获取工具条和状态条的指针 28 (33) 如何设置工具条标题 29 (34) 如何使窗口始终在最前方? 30 (35) 如何在对话框中显示一个位图 30 (36) 如何改变对话或窗体视窗的背景颜色 30 (37) 如何获取一个对话控件的指针 32 (38) 如何禁止和使能控件 33 (39) 如何改变控件的字体 33 (40) 如何在OLE控件中使用OLE_COLOR数据类型 35 (41) 在不使用通用文件打开对话的情况下如何显示一个文件列表 35 (42) 为什么旋转按钮控件看起来倒转 36 (43) 为什么旋转按钮控件不能自动地更新它下面的编辑控件 37 (44) 如何用位图显示下压按钮 37 (45) 如何一个创建三态下压按钮 38 (46) 如何动态创建控件 38 (47) 如何限制编辑框中的准许字符 38 (48) 如何改变控件的颜色 40 (49) 当向列表框中添加多个项时如何防止闪烁 43 (50) 如何向编辑控件中添加文本 43 (51) 如何访问预定义的GDI对象 44 (52) 如何获取GDI对象的属性信息 45 (53) 如何实现一个橡皮区矩形 46 (54) 如何更新翻转背景颜色的文本 49 (55) 如何创建一个具有特定点大小的字体 50 (56) 如何计算一个串的大小 51 (57) 如何显示旋转文本 52 (58) 如何正确显示包含标签字符的串 54 (59) 如何快速地格式化一个CString对象 55 (60) 串太长时如何在其末尾显示一个省略号 55 (61) 为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态 56 (62) 如何给系统菜单添加一个菜单项 56 (63) 如何确定顶层菜单所占据的菜单行数 58 (64) 在用户环境中如何确定系统显示元素的颜色 59 (65) 如何查询和设置系统参数 59 (66) 如何确定当前屏幕分辨率 60 (67) 如何使用一个预定义的Windows光标 60 (68) 如何检索原先的Task Manager应用程序使用的任务列表 61 (70) 在哪儿创建临文件 63 (71) 我怎样才能建立一个等待光标? 64 (73) 如何访问桌面窗口 65 (74) 什么是COLORREF? 我该怎样用它? 66 (75) AppWizard所产生的STDAFX文件是干什么用的? 66 (76) 我在我的程序中是了CDWordArray。我向它添加了约10,000个整数,这使得它变得非常非常慢。为什么会这么糟? 67 (77) 我该如何改变MDI框架窗口的子窗口的大小以使在窗口以一定的大小打开? 67 (78) 在我的程序的某些部分,我可以调用 MessageBox 函数来建立一个信息对话框,例如在视类中。 67 (79) 我需要在我的程序中设置全局变量,以使文档中的所有类都能访问。我应该吧它放到哪儿? 68 (80) 我听说MFC可以发现内存漏洞,我怎样使用该特性? 68 (81) 我怎样才能在我的应用程序中循环浏览已经打开的文档? 68 (82)才能在我的应用程序中循环浏览已经打开的视? 68 (83)数PreCreateWindow是干什么用的? 69 (84)该怎样防止MFC在窗口标题栏上把文档名预置成应用程序名? 69 (85) 我应该怎样防止MFC在窗口标题栏上添加文档名? 69 (86)我应该如何改变视窗口的大小? 69 (87)我有一无模式对话框。我怎样才能在窗口退出时删除CDialog对象? 69 (88)为什么把“delete this”放在PostNcDestroy中而不是OnNcDestroy? 69 (89) File菜单中的MRU列表是从哪儿来的?列表中的名字放在哪儿了?我怎样才能改变列表中项目的最大值? 70 (90) 我在菜单中添加了新的项。但是,当我选该项时,在状态栏上没有出现任何提示信息。为什么? 70 (91) 我怎样才能在应用程序的缺省系统菜单中加上一些东西? 70 (92) 我建立了一个对话框。但是当我显示该对话框时,第一个编辑框总是不能获得焦点,我必须单击它来使它获得焦点。我怎样才能使第一个编辑框在对话框打开时就获得焦点? 71 (93) 我怎样才能使一个窗口具有“always on top”特性? 71 (94) 我要为我的form view添加文档模板。我先建立了对话框模板,然后使用ClassWizard建立了基于CFormView的新类,它也是从CDocument继承来的。我还建立了相应的资源并在InitInstance中添加了新的文档模板。但是,当我试图运行该程序时,出现了Assertion信息。为什么? 71 (95) 我在一对话框中有一列表框,我需要tabbed列表框中的项目。但是,当我处理含有tab字符(用AddString添加的)的列表项时,tab被显示成小黑块而没有展开。哪儿出错了? 72 (96) 我建立了一个应用程序,并使用了CRecordset类。但是,当我运行该程序时,它试图要访问数据库,并给出“Internal Application Error”对话框。我应该怎样? 72 (97) 我用ClassWizard建立了一个类。但是,我把名字取错了,我想把它从项目中删除,应该如何? 73 (98) 当我打开应用程序中的窗口时,我要传递该窗口的矩形尺寸。该矩形指定了窗口的外围大小,但是当我调用GetClientRect时,所得到的尺寸要比所希望的值要小(因为工具栏和窗口边框的缘故)。有其它方法来计算窗口的尺寸吗? 73 (99) 我在文档类中设置了一个整型变量。但是,当我试图把该变量写入Serialize函数中的archive文件中时,出现了类型错误。而文档中的其它变量没有问题。为什么? 73 (100) 如何控制菜单的大小? 74 (101) 改变LVIS_SELECTED的状态颜色? 75 (102) 如何只存储文档的某一部分? 76 (103) 保存工具条菜单有bug吗? 76 (104) Tip of the day的bug 76 (105) 如何可以让我的程序可以显示在其它的窗口上面? 77 (106) 如何控制窗口框架的最大最小尺寸? 79 (107) 如何改变窗口框架的颜色? 81 (108) 如何将应用程序窗口置于屏幕正中? 82 (1)当文档被修改时,如何在标题上加上标志'*'? 82 (2)VC6.0对VC5.0的兼容性? 83 (3)打印和打印机的问题? 83 (4)CRichEditCtrl滚动条的问题? 84 (5)从数据库中读大于32k的内容? 84 (6)如何获得CRichEditCtrl中字符的位置? 86 (7)如何限制mdi子框架最大化时的大小? 86 (8)如何切换视口而不破坏它们? 87 (9)改变列表控制时发生闪烁现象? 91 (10)处理列表控件可见项的问题? 91 (11)产生线程的问题? 91 (12)CFile使用了缓冲区吗? 94 (13)DAO的密码? 94 (15)视口的不活动性如何处理? 96 (16)如何使用COleClientItem的IDispatch接口? 97 (17)关于用户自定义的消息使用? 98 (18)在打开一个文档时退出? 99 (19)在CListCtrl控件中多选择项的删除? 99 (20)工作线程的登录状态? 99 (21)如何增加视图中ActiveX控件的事件处理函数? 101 (22)如何创建一个动态的Tree控件? 102 (23)SDI程序开始时不打开文档? 102 (24)List控件中整栏选择? 103 (25)如何重载MRU文件? 104 (26)CImageList控件中图象橙色被显示为黄色? 106 (27)无法正确改变应用程序的图标? 110 (28)工具条状态的问题? 110 (29)在SDI应用程序中使用Active控件? 112 (30)有RichEdit控件的对话框无法正常显示? 112 (31)DLL中的模板成员函数? 112 (32)CFormView中的上下文帮助? 114 (33)CArchive类的WriteObject函数问题? 115 (34)RegisterWindowMessage中的BroadcastSystemMessage如何处理? 115 (35)CListCtrl中选择变化时如何获得通知? 117 (36)如何向ATL-COM对象传送一个数组? 118 (37)如何选择CTreeCtrl中的节点文本进行编辑? 119 (38)如何改变默认的光标形状? 120 (39)如何用键盘滚动分割的视口? 121 (40)如何在线程中处理状态条? 123 (41)如何阻止WINDOWS关闭? 124 (42)如何使一个按钮Disable? 124 (43)怎样从MFC扩展动态链结库(DLL)中显示一个对话框? 125 (44)想隐藏用户界面怎么办? 127 (45)如何实现SDI与MDI的转换? 128 (46) CDC中的竖排文本? 130 (47)如何激活变灰的弹出菜单? 131 (48)线程消息? 132 (49)TreeCtrl控制的显示速度太慢? 133 (50)关于工具条? 135 (51)关于线程消息? 136 (52)关于控件的焦点? 136 (53)如何捕获键盘按键? 138 (54)怎样实现3D效果? 138 (55)怎样建立客户CSocket? 138 (56)Disable一个非模态对话框的客户区? 140 (57)关于使用SetClassLong和SetCapture问题 140 (58)动画控件? 142 (59)错误声明的消息? 143 (59)怎样模拟鼠标动作? 144 (60)改变对话框标题字体? 145 (61)怎样知道CWinThread对象的状态? 146 (62)如何调整控件对话框条的大小? 146 (63)如何顶端显示CStatic类文字? 147 (64)消息句柄出了什么事? 147 (65)树形控件为何闪烁? 148 (66)怎样才能关闭树形控件中的滚动条? 149 (67)如何建立一个带滚动条的窗口? 149 (68)如何实现对话框的拖放? 150 (69)TrackMouseEvent()怎么了 151 (70)奇怪的组合框控件 152 (71)关于使用MS SANS SERIF字体 152 (72)为什么DLL在字符串表中找不到字符串 157 (73)关于复选框的文本颜色 158 (74)系列化与版本的问题 159 (75)在一个控件内检测并使用ON_COMMAND消息 162 (76)为何MDI程序中有子窗口打开时主应用程序不能关. 163 (77)滚动视中LPtoDP失败 165 (78)ODBC许可问题 166 (79)怪异的字体 167 (80)自画列表框样例 170 (81)CWnd::GetMenu()的问题 173 (82)用MFC制作弹出窗口 174 (83)怎样取消一个弹出式菜单 175
1,WINAPI_OCX.zip封装了部分Windows API的控件(92KB)2,HeaderCtrl.zip多行标题的CListCtrl(19KB)3,RoundBut.zip你需要圆形的按钮吗?这个类已经替你好了,它可是有正常、平面、下推几种风格的,快使用它吧(25KB)4,TransBut.zip实现背景透明的按钮类(306KB)5,AviButton.zip这个类库可以在按钮上显示AVI动画,很酷的(68KB)6,cirbutton.zip一个圆形的可下推按钮,还不错,可以试试看(50KB)7,anibutton.zip这是一个可以使用DIB显示动画的按钮类库,值得一试(186KB)8,bitbutton.zip这个类库允许你在按钮上使用位图和文字(9KB)9,CButtonST.zip只要你的程序中使用按钮,这个类库就使你可以轻松出图文并茂的按钮来(133KB)10,hoverbut.zip这个类库是对鼠标敏感的按纽,你用它可以出象Office助手提示选项那样的东东来(24KB)11,menubut.zip当用户单击一个按钮时弹出一个菜单(5KB)12,TrackBut.zip也是一个位图按钮。不过可比MFC提供的那个好多了!(222KB)13,Stranbut.zip你需要不规则形状的按钮吗?这个类已经替你好了,使用它吧(67KB)14,tributton.zip你需要三角形的按钮吗?这个类已经替你好了,使用它吧(31KB)15,butpicker.zip你想有一个选择颜色的下拉列表吗?胜至你想有一个选择图形的下拉列表吗?这个类是你所需的,下载一个回去试试,分析分析一定会有收获(85KB)16,flat_comb.zip你有没有想过在你的应用程序中加入"浮动"的组合框,就象Microsoft Office中的那样?用这个类就能轻松搞定(21KB)17,fontcombo.zip这是一个用于选择字体的组合框类库,而且直接可以预览(46KB)18,icon_comb.zip这是一个选择图标的组合框的类(2KB)19,mrucombo.zip这个聪明的组合框具有IE那样的自动纪录历史的功能,你最近使用过的文件它会个个记在帐上。需要设计"History"功能的朋友赶快下载一个吧!(21KB)20,mulcombo2.zip这是一个具有多列功能的组合框,如果你的选择项需要多列显示的话一定需要这个东东(44KB)21,autocomp.zip这个聪明的组合框可以根据你的部分输入和可选项替你自动完成,就像IE的地址栏一样。是不是很好?快下载一个吧(24KB)22,ColorSel.zip一个用于颜色选择的组合框的例子(41KB)23,DriveBox.zip一个用于选择驱动器的组合框,告诉你如何实现自画控件以及如何通过Windows Shell得到驱动器的图标(128KB)24,mccombobox.zip这是一个多列的组合框类库(22KB)25,mlistbox.zip这个例子讨论了列表框的单/复选问题,值得一看(22KB)26,checklist.zip这是一个多列且具有检查框的列表框。使用它,你可以制作诸如安装程序中的自定义安装明细表等等。(50KB)27,ListBoxEx.zip你知道怎么让列表框水平滚动吗?这个类会向你解释一切(85KB)28,FlatBox.zip浮动效果的列表框,很酷的!(3KB)29,ColorBox.zip这是一个可以以不同颜色显示列表项目的列表框类库(17KB)30,iconpick.zip一个图标选择的列表框(32KB)31,hexedit.zip这是一个从Cedit派生的十六进制的编辑框类库(30KB)32,histedit.zip注意过Visual C++的Output窗口

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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