![]() |
Desktop Development »
Combo & List Boxes »
General
Beginner
License: The Code Project Open License (CPOL)
Graphic and Text Ownerdraw ListboxBy >>MonMon<<Already made MFC ownerdraw listbox that holds text and icons |
C++, Windows, Visual Studio, MFC, Dev
|
|
Advanced Search |
|
|
|
||||||||||||||||
Hi, everyone. This is my first article on CodeProject and I hope you find it useful. My article is about an ownerdraw MFC listbox that I developed that accepts text and icons in it. The last thing is that I would like you to rate the article so I can know your opinion. Thanks a lot.
As we all know, the regular listbox that you drag and drop from the control toolbar in the Visual Studio 6 just accepts text. But I made three extra features in my listbox which are:
listbox (left or right). There are some procedures in the design that should be taken into consideration before using the COwnerDrawListBox class. First open the resource tab in Visual Studio and select the dialog that you will put your listbox in and drag a listbox from the control bar and adjust it on the dialog like this:
Then open the properties dialog of the listbox and select the styles tab and change the properties as changed in the picture like this:
You have to change the owner draw style to variable, because our listbox contains text and icons to draw, then uncheck the sort and check the vertical scroll as shown above. After that, select the next tab (Extended styles) and check accept files as shown:
One last thing, after you had done all that you have to make a variable and attach it to the listbox control so you can use and add items in it, but be sure that you made the variable from our class COwnerDrawListBox, not CListBox.
First of all, you must add the OwnerDrawListBox .cpp and .h files to the project. Let us suppose that you are working on a Dialog based MFC project as the demo project, if the project name is OwnerDraw, then in the COwnerDrawDlg class, you should include the OwnerDrawListBox files.
#include "OwnerDrawListBox.h"
Then suppose the place that we are going to add the items in the list box is in the OnInitDialog() function and our object from the COwnerDrawListBox class is called m_OwnerListBox, so, just before the line:
return TRUE;
call the member function Add() like this:
m_OwnerListBox.Add("Cafe", AfxGetApp()->LoadIcon(IDI_CAFE));
Where the macro IDI_CAFE is the icon added and named to the project resources. Then there are two other helping functions that I made to help you set the icon and the text position SetIconPosition and SetTextPosition respectively. If you wanted to set the position of one, then you have to set the position of the other else the one which its position was set is the one that will be drawn and the other won't be drawn. You can use the two functions like this:
m_OwnerListBox.SetTextPosition(COwnerDrawListBox::ITEM_LEFT);
m_OwnerListBox.SetIconPosition(COwnerDrawListBox::ITEM_RIGHT);
where the parameter COwnerDrawListBox::ITEM_RIGHT or COwnerDrawListBox::ITEM_LEFT that is passed to the function SetIconPosition or SetTextPosition is the value where you want to set the text or the icon in the listbox. If you didn't set either positions of the icon and the text, they will be set to the default position where the text will be on the right and the icon will be on the left.
After you have finished, you must call function Destroy() to delete all the pointers used in the COwnerDrawListBox class and not to allow any memory leaks to happen like this:
m_OwnerDrawListBox.Destroy();
My Name is Mina Nabil, I'm working as a Software Engineer in Pyramids Systems Development (PSD) and this my first article on CodeProect as I said before, so I would like to hear your comments, reviews and if anyone wants to ask anything, just mail me at mina.nsami@gmail.com or leave me a message, I promise that I'll reply. Thanks a lot.
| You must Sign In to use this message board. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 1 Sep 2008 Editor: Deeksha Shenoy |
Copyright 2006 by >>MonMon<< Everything else Copyright © CodeProject, 1999-2009 Web19 | Advertise on the Code Project |