QListCtrl - a popup list box Control like that in Visual C++ 6.0

If you have seen VC++ 6.0 or Visual Basic 5.0 at any time you can call a list of all attributes, members of a context variable by pressing Ctrl+<Space>. The list contains many items (members) in some cases. The list cannot be filled with all the items at runtime, because it takes long time. So I designed a some kind of control as ActiveX .

How to use the QListCtrl?

Obviously before inserting in a project, the control needs to be registered. How? You can do this with regsrv32, or ActiveX Test Container in Visual C++. Visual Basic has already a module to add new ActiveX controls, by clicking right button in control toolbox and select then the Add component item menu.

Everybody knows how to insert a new ActiveX Component in his project. In Visual C++ user have to select Project \ Add to project \ Components and Controls \ Registered ActiveX Controls, and to choose the wished control from the list. After the QlistCtrl ActiveX Control has been inserted the wizard will insert new classes in your project: CQListCtrl and COleFont. In Visual Basic it is even more simple to add this component to your project.

Few classes used in QlistCtrl Control

_DQListCtrl – interface of this control. It contains all properties and members of QlistCtrl Control, such as Header, InitItemsCount, and so on. If user want to set a new header to his control at runtime he have to call the Header property. This property is a string property and it contains all names, width and justify of columns. How? Here a sample: Column 1:128:Right|Column 2:146:Center. What this means? The control will have two columns, one called Column 1, with width 128, and right justify, and another column Column 2, with 146 as width, and Center as justify. Few words about InitItemsCount. When user uses this control, he need to call this function, before to show the control. That function will generate a event ItemsCount. If your parent of control receive the event, he need to put in parameter passed the number of items that will be loaded.

_DQListCtrlEvents – events interface of this control. The control supports the following events:

void ItemsCount(long* nItemsCount); - override this event to put number of items into nItemsCount

void AllItemsLoaded(); - this events announce that the control has already loads all items.

void LoadLabel(long nIndex, BSTR* sText, long* lParam) – it asks owner to give the label of nIndex item, and the user data of this item in lParam parameter.

void LoadSubItem(long nIndex, long nSubIndex, BSTR* sText); - it asks owner to give nSubIndex subcolumn of item nIndex into sText.

CQListCtrlCtrl – implementation of interfaces _DQListCtrl and _DQListCtrlEvents. This class is derived from ColeControl, so can be view as a ole control, but the contained window is a SysListView32 window.

Property Page of QlistCtrl

 

Requirements of control to work.

Before to use the control user must call InitItemsCount() method, for sample in OnInitDialog (for dialog), or OnInitialUpdate( for CformView), or in FormLoad in Visual Basic. This function will generate the event: ItemsCount: User have to choise from wizard the event and override it. As parameter user will receive a pointer to a long value. He needs to put in the content of this value the number of lines that will be added to qlistcontrol. Another events that user must override is LoadLabel. As parameters user will receive the nIndex , pointer to a string where user must put the labet of item nIndex, and at lParam parameter content, user have to put a particular data of nIndex item. The last event that user must override is LoadSubItem. This has the same specification as LoadLabel, only that with this user can fill the subitem of a nIndex item.

Download source - 34 KB

Download Demo - 2 KB



Comments

  • You mean like Intellisense

    Posted by Legacy on 10/09/2000 12:00am

    Originally posted by: Aykut

    This feature of Visual Studio is called IntelliSense. (before I learnt this I though that it was a hardware product of ms.)

    Reply
  • Error in VC ++ 6.0

    Posted by Legacy on 08/24/2000 12:00am

    Originally posted by: Vinh Nguyen

    error C2084: function 'unsigned short *__stdcall AtlA2WHelper(unsigned short *,const char *,int)' already has a body
    Please add information on your settings.

    Your sincerely
    Vinh Nguyen

    Reply
  • One more addition

    Posted by Legacy on 05/06/1999 12:00am

    Originally posted by: Yumiko Sankranti

    I had a modal dialog which in turn called our modeless (pretending to be modal) dialog. Although the parent was being enabled in the OnDestroy() method, it was somehow not being activated ie., another window would show up. To fix that, I added the following line to the OnDestroy() method:
    GetParent()->SetActiveWindow ( );

    Reply
  • QListCtrl - a popup list box Control like that in Visual C++ 6.0

    Posted by Legacy on 11/11/1998 12:00am

    Originally posted by: Jim Behm

    How about an example project that uses it in either VC or VB. 
    
    

    Can you put a screenshot on the webpage so we can see what it looks like in action?

    I had to make numerous changes to get it to build. Specifically regarding UNICODE.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Adaptation and evolution are fundamental requirements of survival -- not only in nature, but also in business. Our world has changed dramatically in a short amount of time. Many businesses are fueling and capitalizing on this change, while others are desperately clinging to a bygone era. Who is left standing in the years and decades ahead should come as no surprise. This edition of Unleashing IT highlights the companies that are embracing new circumstances, new methods, and new opportunities. By downloading …

  • Live Event Date: September 19, 2014 @ 2:00 p.m. ET / 11:00 a.m. PT In response to the rising number of data breaches and the regulatory and legal impact that can occur as a result of these incidents, leading analysts at Forrester Research have developed five important design principles that will help security professionals reduce their attack surface and mitigate vulnerabilities. Check out this upcoming eSeminar and join Chris Sherman of Forrester Research to learn how to deal with the influx of new device …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds