|
You could do something like this:
HTREEITEM ItemFromIndex(int index)
{
HTREEITEM item = m_tree.GetRootItem();
while (item != NULL && index > 0)
{
item = NextTreeItem(item);
--index;
}
return item;
}
HTREEITEM NextTreeItem(HTREEITEM hStartItem)
{
HTREEITEM hItem = hStartItem;
if (m_tree.ItemHasChildren(hItem))
{
HTREEITEM hChildItem = m_tree.GetChildItem(hItem);
hItem = hChildItem;
}
else
{
bool foundSibling = false;
while (!foundSibling && hItem != NULL)
{
HTREEITEM hSiblingItem = m_tree.GetNextItem(hItem, TVGN_NEXT);
if (hSiblingItem != NULL)
{
hItem = hSiblingItem;
foundSibling = true;
}
else
{
hItem = m_tree.GetParentItem(hItem);
}
}
}
return hItem;
}
Som eof this was written from memory, other sections are code pasts, so take with a pinch of salt.
If you vote me down, my score will only get lower
|
|
|
|
|
Hi all,
I am looking to work on with PIC/Embedded Systems in C/C++. So I just want to find some resources in two aspect.
1. Books, tutorials where i can take a start
2. Development environment (and simulators, real PICs, etc)
Thanks
I appreciate your help all the time...
CodingLover
|
|
|
|
|
|
Wow, it's awesome. Prettymuch all is their in your post. Thanks.
One more thing here too. I have just start to use MPLAB. Seems ok so far, and I'm writing a sample on it. But seems to me the results deals with the simulated environment. Is there anyway to deals with devices such as real PICs, LEDs and so on.
I appreciate your help all the time...
CodingLover
|
|
|
|
|
|
I think I can take a start with PicSimLab. Last night I tried a sample code with it and works fine.
Once I have confidence with PIC programming I'll buy some stuff.
Thanks for the link too.
I appreciate your help all the time...
CodingLover
|
|
|
|
|
WOW! Someone's done this before...
|
|
|
|
|
|
Thanks for sharing with me all of these.
However since I am new to PIC programming, it is better to move with some emulators. Honestly I cannot spend a lot at this moment for these stuff.
I appreciate your help all the time...
CodingLover
|
|
|
|
|
Hi,
I have a Dialog based application, to transfer a file I am using a thread (say T1).
If I need to abort the T1 I need to press cancel button, for abort process I am using a memeber variable (bStopPushThread ) as a flag. If I set it ture it comes out of T1.
But my application getting hang. Code on Abort button click is below:
if(g_hThreadHandlePush)
{
m_bStopPushThread = true;
WaitForSingleObject(g_hThreadHandlePush,INFINITE);
CloseHandle(g_hThreadHandlePush);
}
But It I dont use WaitForSingleObject(), it wirk fine, T1 treminates.
I can check using debug..
If I use WaitForSingleObject as pointer come on this statement application hangs and I even cant check the T1.
Please suggest me solition.
|
|
|
|
|
Could you also post the code of the thread in which the m_bStopPushThread variable is accessed ?
|
|
|
|
|
Are you completely sure g_hThreadHandlePush is the handle of the thread that checks the flag?
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> If it doesn't matter, it's antimatter.<
|
|
|
|
|
This is exactly what I was thinking... +5
|
|
|
|
|
Thanks.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> If it doesn't matter, it's antimatter.<
|
|
|
|
|
You probably have code looking like this in your thread:
while( !m_bStopPushThread )
{
}
Chances are that the m_bStopPushThread has been optimized into a register in your thread controlling loop which means that the thread won't see the value change.
This happens if the variable is not written to inside the loop.
Building a debug version disguises this behaviour since optimizations usually are turned off.
The remedy is to declare the variable m_bStopPushThread as volatile , which will tell the compiler to read its value from the variables memory address every time and not to hold its value in a register.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
If I had to guess, as someone already stated, g_hThreadHandlePush may not be the actual thread handle that you're expecting. To follow up on that, I hate to see people wait on something for an INFINITE time span. I know some disagree, but imagine if someone works on your code years later when you're not around and removes (for example) the m_bStopPushThread variable... they would end up with a freeze and it would be very hard to pinpoint where the freeze is occurring (debugging in multithreaded applications gets complex). I think you're better off setting a reasonable timeout, then alerting as to what occurred (using trace statements, message box, whatever).
|
|
|
|
|
Hi,
I am using CRichEditCtrl. I need to add percentage in a loop at end of text.
Every time I need to call GetWindowText() and append text and again SetWindowText(), but due to this I am getting flickring.
How can I add only a single line og text in CRichEditCtrl so that I can avoid flickring.
|
|
|
|
|
|
|
Don't know how much it would flicker, but try using CRichEditCtrl::SetSel[^] and CRichEditCtrl::ReplaceSel[^] to change only the part of the text you want. You might try combining it with CWnd::SetRedraw[^] and CWnd::RedrawWindow[^] to have it redraw itself only once after the text has been changed.
> The problem with computers is that they do what you tell them to do and not what you want them to do. <
> If it doesn't matter, it's antimatter.<
|
|
|
|
|
|
I am new to the MS TR1 2008 implementation of regex.
My application used to use a regex provided by a third party sofware house (Tropic Sofware East) - but I decided to move to MS TR1 version (from all the reports I read - I am beginning to regret that decision).
Has any one else experienced problems with matching reg-expressions that are case sensitive? Here is an example:
...
fOption |= std::tr1::regex::icase; // Ensure case-insensitive.
...
try
{
a_pRegex->assign( a_pszString, fOption );
}
...
// later
std::string str = ( LPCTSTR )szString;
if( regex_match( str.begin(), str.end(), *m_pRegex ) )
{
// Yippie .. a match
...
}
It's not important about the variable names that get passed around in the code (as the snippet is obviously heavily edited. It nevertheless does not perform a match - even on a simple 'HELLO' and 'H[a-z]+O') - if anyone has any pointers as to where I am going wrong - I'd appreciate the help.
Regards.
James
|
|
|
|
|
TenFiftyTwo wrote: It nevertheless does not perform a match - even on a simple 'HELLO' and 'H[a-z]+O')
I've not ever used that library, but what about:
H[A-Z]+O
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Some people are making such thorough preparation for rainy days that they aren't enjoying today's sunshine." - William Feather
|
|
|
|
|
As I read the question, the OP isn't looking for an uppercase regex; he wants case-insensitive matching.
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
Hi.
Yes, that works, the problem seems to lie in that the chars between the brackets [] do not get processed in a case-insensitive way.
I believe the following describes the problem:
www.comeaucomputing.com/iso/lwg-active.html#523
It is still flagged as an open issue - if this is actually the case then this is madness. The least I expect from a regex, is to be able to perform a case-insensitive comparison on a given range of characters.
-- modified 28-Sep-11 5:42am.
|
|
|
|