图形和文本所有者绘制列表框

Sample Image - MFC_OwnerDraw_Listbox.jpg 介绍 你好,每个人。这是我关于CodeProject的第一篇文章,我希望它对您有用。我的文章是关于一个ownerdraw MFC列表框,我开发,接受文本和图标在它。最后一件事是,我希望你给这篇文章评分,这样我可以知道你的意见。非常感谢。 列表框的功能 我们都知道,在Visual Studio 6中,从控件工具栏拖放的常规列表框只接受文本。但我做了三个额外的功能在我的列表框是: 接受文本旁边的图形图标(.ico)文件。您可以确定文本和图标在列表框中的位置(左或右)。你可以在列表框中拖放任何(.ico)图标文件,它们会自动添加。 开始之前要做的事情 在使用COwnerDrawListBox类之前,需要考虑一些设计过程。首先在Visual Studio中打开resource选项卡,选择你要放入列表框的对话框,然后从控制栏中拖拽一个列表框,然后像这样在对话框中调整它: Project Settings 然后打开列表框的属性对话框,选择样式选项卡,改变图片中的属性,如下图所示: Listbox Styles Settings 您必须将所有者绘制样式更改为变量,因为我们的列表框包含要绘制的文本和图标,然后取消对排序的勾选,并选中如上所示的垂直滚动。在此之后,选择下一个标签(扩展样式)并检查接受文件,如下所示: Listbox Extended Settings 最后一件事,在你做了所有这些之后,你必须创建一个变量并将它附加到listbox控件上,这样你就可以在其中使用和添加项目,但请确保你从我们的类COwnerDrawListBox创建了这个变量,而不是CListBox。 使用的代码 首先,您必须将OwnerDrawListBox .cpp和.h文件添加到项目中。让我们假设您正在处理一个基于对话框的MFC项目作为演示项目,如果项目名称是ownerdrawdlg,那么在COwnerDrawDlg类中,您应该包括OwnerDrawListBox文件。 隐藏,复制Code

#include "OwnerDrawListBox.h"

然后假设我们要在列表框中添加项目的地方是在OnInitDialog()函数中,并且我们来自COwnerDrawListBox类的对象被称为m_OwnerListBox,因此,就在这一行之前: 隐藏,复制Code

return TRUE;

像这样调用成员函数Add(): 隐藏,复制Code

m_OwnerListBox.Add("Cafe", AfxGetApp()->LoadIcon(IDI_CAFE));

其中宏IDI_CAFE是添加到项目资源并命名的图标。然后还有两个我创建的帮助功能,分别帮助您设置图标和文本位置SetIconPosition和SetTextPosition。如果你想设置一个的位置,那么你必须设置另一个的位置它的位置被设置的那个将会被绘制,而另一个将不会被绘制。你可以像这样使用两个函数: 隐藏,复制Code

m_OwnerListBox.SetTextPosition(COwnerDrawListBox::ITEM_LEFT);
m_OwnerListBox.SetIconPosition(COwnerDrawListBox::ITEM_RIGHT);

其中参数COwnerDrawListBox::ITEM_RIGHT或传递给函数SetIconPosition或SetTextPosition的COwnerDrawListBox::ITEM_LEFT是你想在列表框中设置文本或图标的值。如果您没有设置图标和文本的任何一个位置,它们将被设置为文本在右边而图标在左边的默认位置。 在你完成之后,你必须调用Destroy()函数来删除所有在COwnerDrawListBox类中使用的指针,并且不允许任何内存泄漏像这样发生: 隐藏,复制Code

m_OwnerDrawListBox.Destroy();

关于我的 我叫米娜·纳比尔,我作为一个软件工程师在金字塔系统开发(PSD)和我的第一篇文章CodeProect as 我之前所说,so 我想听到你的评论,评论,如果有人想问什么,只是邮件我在mina.nsami@gmail.com或离开我一个消息,我保证我将回复。非常感谢。 本文转载于:http://www.diyabc.com/frontweb/news361.html

原文地址:https://www.cnblogs.com/Dincat/p/13443811.html