Click here to Skip to main content
Click here to Skip to main content

Simple Tree Control

By , 28 Oct 2002
 

Why a new tree control

First of all, there are lots of custom tree controls available so what's the need for this? In one of my projects I happened to use several tree controls to show data objects at different levels and I had to deal with user actions. Each time, my tree control has to respond in different way depending on the selected item. Here I present what I have (I re-wrote some of my code to use this custom control and I believe that it is more readeble and easy to understand now)

How it works

CSimpleTreeCtrl "simply" overrides the MFC CTreeCtrl class and provides some access functions to deal with it. CSimpleTreeCtrl::TreeCtrlItem is used to add new items in the tree control. You should write your own class (to use it in a better way) and override virtual functions to be notified by windows messages such as item selection, right click etc.

CSimpleTreeCtrl provides the following virtual functions:

     virtual void          selChanged ( TreeCtrlItem *item ) {} ;
     virtual void          lClick ( TreeCtrlItem *item ) {} ;
     virtual void          lDblClick ( TreeCtrlItem *item ) {} ;
     virtual void          rClick ( TreeCtrlItem *item ) {} ;
     // will be called after three control is created
     virtual void          postCreate ( void ) {} ;

As you noticed base class has nothing to do with these functions. It simply handles windows messages and calls the virtual function (I just got bored having to register my message handling functions). The base class also will let CTreeCtrl do its own stuff, so whenever you receive a lClick() you will also get a selChanged() if this click causes the current selection to change. The only difference is with rClick(): since in most cases I want right click to change the selected item, I handled this case in my message handler, so it will also send a selChanged() as well (if a selection exists). You may change this behaviour if you want.

For me the most useful part is CSimpleTreeCtrl::TreeCtrlItem. This class provides the following virtual functions:

     // will be called on selection
     virtual void          onSelected   ( void ) {} ;
     // will be called for old selected item when there is a new selection (before 
     // onSelected() for new item)
     virtual void          onUnSelected ( void ) {} ;
     // will be called with position in screen coordinates if user right clicks on item
     virtual void          onRClick    ( CPoint pos ) {} ;
     // will be called if user left double clicks on item
     virtual void          onLDblClick ( void ) {} ;
     // will be called after item inserted in tree
     virtual void          postInsert  ( void ) {} ;

It also provides two additional functions which you may find necessary. Thanks to Michael Dunn and his article "Neat Stuff to do in List Controls Using Custom Draw"

     void          setTextColor   ( COLORREF color ) ;
     void          setBkColor     ( COLORREF color ) ;

The default color for item text is black ( RGB(0, 0, 0) ) and item background is white ( RGB(255, 255, 255) ).

You can write your own class handling only required virtual functions as shown below.

     class BaseCtrlItem : public CSimpleTreeCtrl::TreeCtrlItem
     {
     public:
          BaseCtrlItem ( CString name, CMyDataClass *myData ) 
               : CSimpleTreeCtrl::TreeCtrlItem ( name ) 
          {
               m_myData = myData ;
          } ;

          virtual ~BaseCtrlItem () {} ;

          virtual void     postInsert ( void ) 
          {
               //You can insert sub items to the tree control if necessary
          } ;

          virtual void     onRClick ( CPoint pos ) 
          {
               //Show popup menu according to your data pointer
          } ;

     protected:
          CMyDataClass *m_myData ;          
     };

If an item is removed from the tree (using CSimpleTreeCtrl or CTreeCtrl functions) related the CSimpleTreeCtrl::TreeCtrlItem pointer will be removed as well, so you do not need to worry about deleting the item pointers.

There is some more to add to this class but I prefer to keep it as simple as possible. Also, it handles most of the requirements in my project. I would, however, like to hear if there is any usefull features to add while keeping it simple.

The demo application creates a new tree control and adds some items in different colors. It also handles the onRClick() function in items. You can just add SimpleTreeCtrl.h and SimpleTreeCtrl.cpp to your project and enjoy it. The header file should be clear enough for documentation, if it is not, just let me know :-)

Known Problems:

  1. CSimpleTreeCtrl does not hide the base implementation of CTreeCtrl so users may use the base class functionality as well. However this may cause some problems. Whenever a CSimpleTreeCtrl::TreeCtrlItem item is added to the tree, it's pointer is added as item data in CTreeCtrl. If you use HTREEITEM to add new items and set item data by yourself, CSimpleTreeCtrl will assume that user data is a CSimpleTreeCtrl::TreeCtrlItem or derived pointer. If there is no user data, there should not be any problem

  2. CSimpleTreeCtrl::postCreate() will be called when tree control receives an OnCreate() message. I noticed that in some cases (according to how you use the tree) that control does not get this message. But I did not check it in detail. If you've got any problem send me the details.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Ozgur Aydin Yuksel
Web Developer
Romania Romania
Member
Aeronautical Engineer working on Software Development,
 
Graduated from Istanbul Technical University, Istanbul, Turkey at 1996.
 
Mainly works in simulation projects for defense, vehicle simulations, computer graphics, cockpit design and all related tools. Deals with MFC and other GUI tools whenever necessary.
 

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
Generaltree control color text onlymemberashu_om18 Aug '09 - 23:43 
hi in Tree contral
How can i set the color Accoring to the text
 
measn if one item like
"world Cup(2001)"
"world Cup(2002)"
"world Cup(2003)"
"world Cup(2004)"
 
i need (2001) in Diffrent colour so how can i do that ?
plz help
 
Ashutosh Soni
Software Engineer
Mumbai(India)

Generaltree control color text onlymemberashu_om18 Aug '09 - 23:43 
hi in Tree contral
How can i set the color Accoring to the text
 
measn if one item like
"world Cup(2001)"
"world Cup(2002)"
"world Cup(2003)"
"world Cup(2004)"
 
i need (2001) in Diffrent colour so how can i do that ?
plz help
JokenicememberMember 45624273 Aug '09 - 17:43 
Smile | :)
GeneralmerhabasussNCECE11 Oct '05 - 4:04 
D'Oh! | :doh: Sigh | :sigh: abi güzel yapmışın eline sağlık...:Cool | :cool: Suspicious | :suss: Dead | X| Hmmm | :| Unsure | :~ Confused | :confused: Mad | :mad: WTF | :WTF: OMG | :OMG: Roll eyes | :rolleyes: Blush | :O :->Sleepy | :zzz: Cry | :(( D'Oh! | :doh: Sigh | :sigh: Frown | :( ^);P;)Laugh | :laugh: Big Grin | :-D Smile | :) confused:
GeneralHide the selection (the blue color)memberd00_ape28 Feb '05 - 1:52 
How do I hide the selection of an item. I have developed an own multiselect function and would to hide the original selection (the blue color in CTreeCtrl).
 
_____________________________
 
...and justice for all
 
APe
GeneralTree Expertsmemberpank0071 Jan '05 - 6:08 
This is a good sample and simple, but for me I have put Tree or CTreeCtrl in the Docking Control with a lot of children.
Could anyone show how to use TVN_SELCHANGED in order to display one of formviews in mainwindow when I selchange one of the node. Your help will be very appreciated.
The Novice
GeneralLet's go furthermemberRepsej20 Oct '04 - 19:54 
Why not expand the CSimpleTreeCtrl::TreeCtrlItem node interface, to also list children, define it's own label etc. Seen from an oo perspective only "MyTreeCtrlItem" can answer to what might be my label, and to how many children I have.
 
I recently started a discussion on experts-exchange (lemmesee[^]) on this question. My first suggestion for a node interface looked something like this:
 
class ITreeNode
{
virtual CString GetTreeLabel() { return "Default"; }
virtual void GetTreeChildren( CTreeNodeList& L ) {}
virtual int GetTreeImage() { return 0; }
virtual int GetTreeImageSelected( return GetTreeImage(); }
}

 
This hides away alot of CTreeCtrl specefic code, and leaves a clean interface for objects to implement, if they want to be able to get represented in a tree.
GeneralRe: Let's go furthermemberRepsej20 Oct '04 - 20:21 
Oh, and why not let the tree itself hande right click context menu, and only ask the ITreeNode for strings to put in the popup menu. All the TrackPopupMenu() tricks is this way hidden to node objects. Tricks that I don't want to worry about when I "just want a context menu with a few choises"
 
class ITreeNode
{
//The tree would call this method on the right
//clicked node to have popup menu items listed
virtual void GetContextMenu( CStringList& L ) {}
 
//Then when user clicks an item, the tree calls
//this method to notify the node. This hides away
//message id's to each item seen from a nodes view.
virtual void OnContext( int nItemIndexSelected ) {}
}

GeneralRe: Let's go furthermemberOzgur Aydin Yuksel21 Oct '04 - 9:39 
Good question... However I think it is a little bit out of the scope of "Simple Tree Ctrl". What you're suggestion goes to write wrapper classes around the MFC objects which actually I tought at the beginning. But again, it was totally out of my mind when I wrote this control. And I did not write any other similar classes for other MFC controls.
 
So if you like to give a try I also recommend to check sigslot template headers which is available on internet somwhere ( I'm sure a quick search might give nice results). Checking some about QT (if not done yet) also will give really nice ideas I am sure...
 
"Computers emit waves that affect the brain, causing ... Superstitious beliefs ("the computer hates me") and magical thinking ("the program only works when I wear my hat backward"). "
from "How to Think Like a Computer Scientist"
GeneralGetting unique info from CTreeCtrlmemberPsychoPsam16 Jun '04 - 18:51 
I populate my CTreeCtrl with object names from my scene (Im making a scene graph).
 
But some of my scene objects have the same name. I use the following code to get the name of the child... but I may have picked a scene object that has the same name as others such as "crate.x" Is there a unique id for each entry in the list so I alway know which item I just picked? Is there another way?
 
HTREEITEM SelItem, ParentItem;
 
SelItem = m_TreeCtrl.GetSelectedItem();
 
ParentItem = m_TreeCtrl.GetParentItem(SelItem);
 
// Set path of object
CString m_Child;
 
m_Child = m_TreeCtrl.GetItemText(SelItem);
GeneralCTreeCtrl::SetCheckmemberedgar32514 Jun '04 - 7:36 
I have two problems:
1. CTreeCtrl::SetCheck(TRUE) does not work correctly or it is not such easy as should be; I've proved the solutions that appear from some other users, but they don't work. I have a CTreeCtrl in a dialog, and in the OnInitDialog function, I add items to the tree, and for some of them I call setCheck(TRUE), but when the dialog appears all items are not checked. Why? Doing
m_ButtonTree.ModifyStyle( TVS_CHECKBOXES,0 );
m_ButtonTree.ModifyStyle( 0, TVS_CHECKBOXES );
is not a solution...
 
2. The second problem is that I need to capture the event generated when I click the 'check box image' of the tree control. It is not a selection, and I've not found any other event message related with check boxes. Anybody knows how to do this?
GeneralRe: CTreeCtrl::SetChecksussAnonymous30 Jul '04 - 22:08 
OnInitDialog(){
m_Tree->Create(WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASLINES |TVS_LINESATROOT |
TVS_HASBUTTONS | TVS_CHECKBOXES, rc, this, 1);
 
m_Tree->ModifyStyle( TVS_CHECKBOXES, 0 );
m_Tree->ModifyStyle( 0, TVS_CHECKBOXES );
m_Tree->Init();
}
 
In the Init()funtion, I add items and SetCheck(hti, true);
It works!!Smile | :)
GeneralRe: CTreeCtrl::SetChecksussAnonymous30 Jul '04 - 22:10 
void CTreeCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
UINT uFlags=0;
HTREEITEM hti = HitTest(point,&uFlags);
if(( uFlags & TVHT_ONITEMSTATEICON )&&(hti!= NULL))
{
// you click hti's check box
}
}
GeneralRe: CTreeCtrl::SetCheckmemberm4pp120 Dec '04 - 9:17 
in reference to point 1, this is mentioned in the sdk docs if you read *extremely* carefully (no, nor did i)
 
"The TVS_CHECKBOXES style creates checkboxes next to each item. If you want to use the checkbox style, you must set the TVS_CHECKBOXES style (with SetWindowLong) after you create the tree-view control and before you populate the tree. Otherwise, the checkboxes might appear unchecked, depending on timing issues."
 
- mappy
GeneralRe: CTreeCtrl::SetCheckmemberETA3 Jun '07 - 23:29 
THANK YOU !
 
Someon should have made this info better available. On the front page or something.
Took me 2 hours !
 
So again, thank you !
 
Greetings from The Netherlands

Questionwith images ?membercross bones style12 May '04 - 2:45 
I do really like this widget but,
am I wrong or CSimpleTreeCtrl doesn't accept images from CImageList ?
 
I've tried to add a new CSimpleTreeCtrl::InsertItem member that call CTreeCtrl::InsertItem(LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST)
but with no success.
 
Any idea ?
 
Thanks
Generalcoomemberhaoshenghan19 Apr '04 - 14:49 
Suspicious | :suss:
QuestionHow to call a Dialog member functionmemberC_A14 Apr '04 - 18:33 
Hi!
 
I was included this code in my program which has a edit control.
 
What I'm wanting to happen is, when I will click the node in the tree control, it will execute my dialog member function which changed the value on the edit box.
 
Can anybody help me.
 
Thanks,
Chris
GeneralCTreeCtrl under _UNICODE settingmembercharcoalc3 Mar '04 - 15:54 
When I define "_AFXDLL,_UNICODE" in project setting, it makes me able to show Japanese and Korean, etc. in the CListCtrl correctly. But when I want to do the tree expand using the "TVN_ITEMEXPANDING" event function, it fails. I find that when I double click the tree item, the event function will not be fired up. And I can't get the tree structure of the item when I use the "GetChildItem" in the "TVN_ITEMSELCHANGED" event function. The tree-item path in the event function is correct. Thanks for your answer.
GeneralCTreectrl::Setcheck() does not work!sussAnonymous21 Jul '03 - 18:27 
I wrote my program using that Simple Tree Control.
using CTreeCtrl with check box...but check box does not working...
 
HTREEITEM h_Item = tItem->getHandle();
if (!m_treeCtrl.GetCheck(h_Item))
m_treeCtrl.SetCheck(h_Item, 1);
 
or
 
HTREEITEM hItem = m_treeCtrl.GetFirstVisibleItem();
m_treeCtrl.SetCheck(hItem, 1);
m_treeCtrl.Expand( hItem, TVE_EXPAND );
 
Expand() is working well...but SetCheck() is not working...
 
how can i use check box...??
GeneralRe: CTreectrl::Setcheck() does not work!sussAnonymous30 Jul '03 - 5:29 
Use this
 
mTree.ModifyStyle( 0, TVS_CHECKBOXES );
 

GeneralRe: CTreectrl::Setcheck() does not work!sussanonymous17 Feb '04 - 0:52 
Didn't work, but use
 
m_Tree.ModifyStyle( TVS_CHECKBOXES, 0 );
m_Tree.ModifyStyle( 0, TVS_CHECKBOXES );
 
and it works!
GeneralThanksmemberrichard sancenot20 Aug '04 - 0:37 
Thanks you saved me time.

 
Tout programme dont la fiabilité dépend de l'homme n'est pas fiable
GeneralRe: CTreectrl::Setcheck() does not work!sussAnonymous22 Sep '04 - 8:18 
Anyone know why this might leak 4 GDI Objects on the ModifyStyle(0, TVS_CHECKBOXES) line and how to avoid it/fix it? Happens every time w/ VC++6 on the SetWindowLong() call in _AfxModifyStyle() in WINCORE.CPP.
GeneralRe: CTreectrl::Setcheck() does not work!sussllllskywalker17 Jan '05 - 12:32 
another approach would be this...
 
SetWindowLong(m_treeCtrl, GWL_STYLE, m_trImages.GetStyle() | TVS_CHECKBOXES);
GeneralTreeCtrlItem not deletedmemberRoongrit29 Apr '03 - 21:26 
I use your control but didn't use in Dialog. I create it manually with CreateEX method. In my derived class,I create TreeCtrlItem in OnCreate() method. Somehow I close my application and found that TreeCtrlItem aren't deleted. I have to delete it in destructor to avoid memory leak. I thought that your control will destroy TreeCtrlItem automatically (It destroy them if control is in Dialog). So, what is the different between creating control manually and use control in Dialog?
GeneralRe: TreeCtrlItem not deletedmemberOzgur Aydin Yuksel29 Apr '03 - 21:46 
Well, I did not try the case that you explained here. But what I know is creating a control using VS gui editor, and from code is quite different in MFC. -I don't know how exactly and why but I met similar cases for other controls-.
 
First of all are you sure that destructer for the tree control is called when you close the application. I'm not sure if MFC is referance counting for the controls. This might be a problem if you use pointers for the controls.
 
Probably base class (CTreeCtrl) deletes all items automatically at destruction, and when it happens derived class should clear its memory. If destructer is already called at your case, I might need to check the code. Can you send me a sample code where you met this problem?
 
"Computers emit waves that affect the brain, causing ... Superstitious beliefs ("the computer hates me") and magical thinking ("the program only works when I wear my hat backward"). "
from "How to Think Like a Computer Scientist"
Generaldynamical stuff in the treememberT1TAN22 Apr '03 - 8:12 
hi everybody!
 
before i start i just want to say "bravo!" to the author of this article and code Cool | :cool:
 
ok. let's get to the point. i'm using cimple tree ctrl to represent a collection of cd's, and their contents (or 'packages', as i call them in the program). so i need to add and remove the tree items dynamically (user input). everything works fine until the destruction of the tree itself, when i get some weird err WTF | :WTF: (the thing is that i can add a 'normal' node correctly, but when i put a subitem it crashes everything, something with the handles..??) i suppose there is a 'correct' way of putting stuff into that darn tree, so it can be deleted properly. does someone know how to do this? i hope the author does.. Wink | ;)
 
---
kick ash.
http://t1tan.cjb.net
GeneralRe: dynamical stuff in the treememberOzgur Aydin Yuksel29 Apr '03 - 21:53 
Hi,
I'm using several simple tree controls in one of my projects adding and deleting different tree items at runtime. And did not get any error at the destruction.
 
If you can send me the case that you have, I'd like to check to see what's going on.
 
"Computers emit waves that affect the brain, causing ... Superstitious beliefs ("the computer hates me") and magical thinking ("the program only works when I wear my hat backward"). "
from "How to Think Like a Computer Scientist"
GeneralRe: dynamical stuff in the treememberT1TAN3 May '03 - 6:12 
hm.. a weird situation happened.. my code workes after reformatting my hdd.. Confused | :confused: i dunno what to say. if it happens again, i'll contact you. sorry. also sorry for not posting this sooner, problems with internet connection.. tnx anyway. Cool | :cool:
 
---
kick ash.
http://t1tan.cjb.net
GeneralTreeItem Coordinatesmembernaveensg14 Apr '03 - 1:49 
hi i want to get the tree item coordinates.
TreeView_GetItemRect is failing. its returning False.
using coordinates i want to send right button click message.
i want to know how to get the handle to Context Menu.
in my treecontrol already context menu has been attached to the tree item. whenever i right click, context menu pops up.
but instead of right click using mouse, i want to send WM_RBUTTONDOWN message to the treeitem.
actually i am sending all these messages from some other application by using handle to the treecontrol.i can get the handle to the treecontrol by FindWindowEx method.
if anybody knows, how can i get the coordinates of the tree item with respect to the screen, plz mail me to naveen.gangadharappa@honeywell.com.
 
if anybody knows, how can i invoke the context menu using sendmessage and how can i select some menu item from the context menu?, plz mail me to naveen.gangadharappa@honeywell.com.
 

 


Generalthanks! this is really what i need..memberkaisze14 Feb '03 - 16:55 
the program is so easy to be used... thanks..Smile | :)
QuestionHow changes the color of the node on-linememberasdmusic31 Oct '02 - 14:43 
How changes the color of the node on-line?
AnswerRe: How changes the color of the node on-linememberOzgur Aydin Yuksel1 Nov '02 - 0:35 
You can use
CSimpleTreeCtrl::TreeCtrlItem::setBkColor()
CSimpleTreeCtrl::TreeCtrlItem::setTextColor()
at any time. But you may need to force the control to redraw.
GeneralRe: How changes the color of the node on-linememberasdmusic3 Nov '02 - 14:03 
What I mean to say is I want to changes the color of that lines, but not is the node's color.
GeneralRe: How changes the color of the node on-linememberOzgur Aydin Yuksel3 Nov '02 - 14:54 
It should not be as easy as changing the background or text color. I have no idea at the moment. You can check the data structures in OnCustomDraw() and see if there is something about that.
 
Also you may try to skip default drawing for items and find out when MFC draws that lines. To handle Post Draw Item case and redraw the lines with your own color might be another idea.
 
Ozgur.
Answerm_treeCtrl.RedrawWindow();memberOlofAs5 Oct '04 - 23:42 
I do a RedrawWindow of the entire control.
GeneralCSimpleTreeCtrl::lClick ()memberOzgur Aydin Yuksel31 Oct '02 - 1:03 
I just noticed that I did not call lClick() in any message handlers, 'cause I did not handle OnClick() message. I guess it's because I didn't need it before, selChanged() works well for most cases.
 
Anyway, when if an update will be required I'll add it, or remove it from article Smile | :)
 
please let me know if anyone needs lClick() really.
 
Sorry for that.
 
Ozgur.
GeneralAbout drawingsussAnonymous30 Oct '02 - 23:00 
Very good
 
Just one point that make me sad...
 
When You do MouseDown on a item, the old item selected become white and
will only get its right color when you do MouseUp...
 
kind of flicking, not pretty
 
anyway, thanks
 
Nicolas
GeneralRe: About drawingmemberOzgur Aydin Yuksel31 Oct '02 - 0:56 
Thanks for the comment, I did not notice that. Here is a quick solution: You can change the code in CSimpleTreeCtrl::OnCustomdraw(). change the existing switch case:
 
case CDDS_ITEMPREPAINT :
if ( bItem ) {
if ( GetSelectedItem() != bItem->getHandle() ) {
pLVCD->clrTextBk = bItem->m_bkColor ;
pLVCD->clrText = bItem->m_color ;
}
}
break ;
 
with the code below:
 
case CDDS_ITEMPREPAINT :
if ( bItem ) {
COLORREF bkColor = GetBkColor() ;
int rBW = GetRValue ( bkColor ) ;
int gBW = GetGValue ( bkColor ) ;
int bBW = GetBValue ( bkColor ) ;
 
int rBI = GetRValue ( pLVCD->clrTextBk ) ;
int gBI = GetGValue ( pLVCD->clrTextBk ) ;
int bBI = GetBValue ( pLVCD->clrTextBk ) ;
 
if ( rBW == rBI && gBW == gBI && bBW == bBI ) {
pLVCD->clrTextBk = bItem->m_bkColor ;
pLVCD->clrText = bItem->m_color ;
}
}
break ;
 
This should work. It is just to avoid drawing for higlighted items. I'm sure there should be some better solutions for that but this is just a quick answer Smile | :) . I did not compare COLORREF directly 'couse one of them has alpha value.
 
Anyway, I hope it helps.
GeneralHelp on CTreeViewmemberAnthonyWinters30 Oct '02 - 14:49 
This does not pertain directly to your article but I thought you would know the answer to my problem. I am trying to alter the style of the CTreeCtrl contained in a CTreeView project, but I can't seem to find a way to do it. I want to make the +/- buttons next to the items visible and make the tree lines visible, for example. Can you help me find the solution to this?
 
Thank You!

 
Thanks!
GeneralRe: Help on CTreeViewmemberOzgur Aydin Yuksel30 Oct '02 - 15:47 
Let's see if I understood the problem correctly. I created a simple MFC Single Document application and change the base class for View class as CTreeView. Then add some items in it.
 
In order to change tree style you should handle Create() function in your CTreeView derived class and change the style of the view. Like below:
 
BOOL CTreeViewView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
// add your style options
dwStyle |=TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT ;

return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
 
hope it helps.
ozgur.
GeneralExcellent...memberNitron30 Oct '02 - 3:24 
The article delivers on the promise. I feel there's no need to write an article on developing a kernel for a new OS to get a good rating. I'd give a solid 4.5, but since I'm going to end up using it: you get the 5.0. Wink | ;)

 
Nitron
_________________________________________--
message sent on 100% recycled electrons.
GeneralReally simple & goodmemberVolki29 Oct '02 - 15:16 
Really simple and usefull. Thanks.
GeneralRe: Really simple & goodmemberFat dog30 Oct '02 - 0:50 
Smile | :) Wink | ;) Is good, i like it
 
dungnv

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web04 | 2.6.130516.1 | Last Updated 29 Oct 2002
Article Copyright 2002 by Ozgur Aydin Yuksel
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid