|
I have written a small program that inserts items into an array and then uses the array to create a tree, problem is i don't know how to relate the tree to the array once it has been created.
ie.
a tree with 3 Name items, relates to an array with 3 name and address items.
I want to be able to click on the 2nd name and return the 2nd address.
If anyone could help with the function call to get an integer value for the selected item it would be great, or some casting work around.
Thanks in advance
|
|
|
|
|
The CTreeCtrl provides a DWORD value associated with each tree item. You can set this value with whatever you want and retreive this value later using the functions:
BOOL CTreeCtrl::SetItemData(HTREEITEM hItem, DWORD_PTR dwData)
and
DWORD_PTR CTreeCtrl::GetItemData(HTREEITEM hItem).
In your case you should set the item's data with its corresponding array index. You may even store in the item's data the address of the object held by the CObArray directly.
|
|
|
|
|
thanks,
not sure how to implement that in the code i've got to be honest..
Basically the important line i have is:
m_tTreeCtrl.InsertItem((versionPtr->GetVersionLabel());
Would it be wise after each insert to get the tree height, return that h treeinfo, then update it?
Also, is there a way to cast a DWord to an int? DWords are far too accurate for what i need.
Cheers
|
|
|
|
|
Pardon me, I cannot undestand this line of code (do not know what is the type of versionPtr ).
To demonstrate, I will assume that versionPtr is an object of type CMyObject and the member function GetVersionLabel() returns a string of that object contents. And finally that we have a CObArray named objArr containing objects of type CMyObject .
Using this assumption, this is how to link the tree items to the array:
int arrIndex;
.
.
CMyObject * pMyObj = (CMyObject *)objArr.GetAt(arrIndex);
HTREEITEM hItem = m_tTreeCtrl.InsertItem(pMyObj->GetVersionLabel());
m_tTreeCtrl.SetItemData(hItem, (DWORD)arrIndex);
.
.
CMyObject * pMyObj;
int index = (int)m_tTreeCtrl.SetItemData(hItem);
pMyObj = (CMyObject *)objArr.GetAt(index);
This sample store the index of the object in the array, a better approach is to store the address of the object itself. In this case, the item data set line would be:
m_tTreeCtrl.SetItemData(hItem, (DWORD)pMyObj);
and the item data retreival line would be:
pMyObj = (CMyObject *)objArr.m_tTreeCtrl.SetItemData(hItem);
I hope that is what you want.
|
|
|
|
|
Thanks very much for your time - i will try to implement it in the morning.
cheers
|
|
|
|
|
The code snippet causing the problem is the returning the NULL_BRUSH to stop the backgrounds from painting themselves:
SetBkMode((HDC)wParam, TRANSPARENT);
bHandled = TRUE;
return (LRESULT)GetStockObject(NULL_BRUSH);
The statics all work fine, but the checkboxes are painted with an entirely black background. Is there a workaround for this (I need the checkboxes to not paint their background as well)?
|
|
|
|
|
Hello
I installed the great CrystalEdit[^]syntax coloring editor and it works well.
But my problem is that I cannot use the ReplaceSel function from my CEditView class...
How can I solve this problem?
Thanks
|
|
|
|
|
Hi, i am running windows XP and have Outlook, i used Spy++ to see which class Outlook uses for its navigation menu, and its a listview. I want to use that kind of listview in my app too. How would i do this? (and also the office toolbar)
Thanks
Kuniva
--------------------------------------------
|
|
|
|
|
One solution is CListView. You can derive a class from it and modify your class as you see fit.
Kuphryn
|
|
|
|
|
you have a create a pretty advanced listview to implement Outlook like listview features. use of CustomDraw() is necessary to change item font etc. check out the listctrl and listview articles here.
|
|
|
|
|
Hi, I´m developing a little program to get real time data. I have to present them in a real time chart, but
"How do I use/develop a chart in VC++ "
Thanks,
d.f
|
|
|
|
|
|
Thanks for the help. I´ll try it.
d.f
|
|
|
|
|
I am a cs graduate student, i am facing a problem in my graduation project. So pls give me your advice for the following:
My project is helping peopole with visual problems to use the computer better, using speech recognition (command and control). So in brief what i need is when i recieve the a command i respond to it. For example when the user say Start i will open the start menue.
My question is how to control or simulate the right click of the mouse (to open or close special folders)like control panal, my computer, start, recycle bin and others. Is it right to go on with the shell or what is the right track.
Thank u for ur time and waiting for an advice
If u want more details i will be very grateful if u ask.
I am very
M.A.S.A
|
|
|
|
|
http://www.codeproject.com/shell/
The above Link may be useful for you
i am the best
|
|
|
|
|
thaks suhredayan for ur advice but i have visited the above url and downloaded some articles from it but it didn't give me want i need exactly.
did u think that this is the right track for my problem.
Together we will be more powerful
M.A.S.A
|
|
|
|
|
Read up on the accessibility interfaces, which are designed for just this purpose. Run AccExplorer9x or AccExplorer32 (for 9x/NT respectively) in the PlatSDK to see a sample app that uses the interfaces.
--Mike--
THERE IS NO THERE IS NO BUT THERE IS
MAGIC PIXIE DUST BUSINESS GENIE CODE PROJECT
Homepage | RightClick-Encrypt | 1ClickPicGrabber
"You have Erica on the brain" - Jon Sagara to me
|
|
|
|
|
Hello,
I'm making a MDI application which has a lot of modeless dialogs used as input-forms.
The problem I have with them is each newly opened dialog overlaps the previously open dialog. I want the user to be able to cascade/tile the dialogs.
Queries:
(1). Is there a way that I can explicitly make them the children of my MDI. And if I can do this, will the CMDIFrameWnd::MDICascade() or CMDIFramWnd::MDITile() work to cascade/tile them.
(2). Or can I use some other function which could cascade/tile the dialogs for me?... ... Or am I required to take care of positioning each dialog properly below the previously opened one??
Thanks,
Rgds,
Nirav Doshi
* The world stands aside to let anyone pass who knows where he is going! - David Jordan *
|
|
|
|
|
I suspect you'll need to do this manually by keeping track of the position of the most recently displayed modeless dialog. Then, offset each new one by (nOffsetX , nOffsetY ), where:
nOffsetX = GetSystemMetrics (SM_CXSMICON);
nOffsetY = GetSystemMetrics (SM_CYCAPTION);
/ravi
Let's put "civil" back in "civilization"
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Okay Ravi... I guess, I have to manually do the task! ~
Anyway, thanks a ton!
I will do it as you've suggested!
Thanks again,
Rgds,
Nirav
* The world stands aside to let anyone pass who knows where he is going! - David Jordan *
|
|
|
|
|
Hi all
How can I print unsigned char's to the console? I compile with the "default unsigned char" option as this has to run on Linux, but in Windows it just spits out garbled characters.
Thanks
I rated this article 2 by mistake. It deserves more. I wanted to get to the second page... - vjedlicka 3:33 25 Nov '02
|
|
|
|
|
|
Thanks Nish, but I'm not sure that will help
I'm reading Afrikaans text from a file. And Afrikaans has all those nice o's, e's, with various thingies on them. Here's some code:
FILE *input;
char inputfile[50] = "input.txt";
char word[50];
char yesno;
if ((input = fopen(inputfile, "r")))
{
while (!feof(input))
{
fscanf(input, "%s", word);
if (!trieIsMember(word))
{
printf("Spell Error: %-20s Add word? ", word);
yesno = getchar();getchar();
if (tolower(yesno) == 'y')
trieAdd(word);
}
}
fclose(input);
}
Any ideas?
I rated this article 2 by mistake. It deserves more. I wanted to get to the second page... - vjedlicka 3:33 25 Nov '02
|
|
|
|
|
leppie wrote:
I'm reading Afrikaans text from a file
That makes a huge difference. Now you basically need wide character versions of all the functions you have been using
Replace printf with wprintf, fopen with _wfopen, fscanf with fwscanf etc...
Regards,
Nish
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
You need to change the code page or the LOCALE or something like that.
|
|
|
|