|
As you've found out, using a static BOOL is a terrible idea. You've found the fatal flaw for yourself.
You can use this to find its current state:
BOOL bExpanded = m_treeCtrl.GetItemState (hItem, TVIS_EXPANDED) == TVIS_EXPANDED;
To check the, erm, expanded state of the given item.
But why are you doing this yourself? This is something the tree can do perfectly well for itself. Just tick the has buttons style, and away you go.
I hope that helps,
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
yes,my codes belows now. but i found another question now.it is:
for example the tree is:
--root1
--subitem1
--subitem2
--root2
--subitem3
when the focus is on the root1 item,and now i change the focus from root1 to root2, the root2 item doesnot collapse at once, and i hit the item root2 again,it then collapse.and now, can i change the codes below to avoid it?
thank u!
void CTreeControlDlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
TRACE("OnClickTree1!\n");
CPoint pt;
GetCursorPos(&pt);
m_treeCtrl.ScreenToClient(&pt);
HTREEITEM hItem = m_treeCtrl.HitTest(pt);
if ( (hItem != NULL) && m_treeCtrl.ItemHasChildren(hItem))
{
UINT nState = m_treeCtrl.GetItemState(hItem, TVIS_EXPANDED);
if (nState & TVIS_EXPANDED)
{
m_treeCtrl.Expand(hItem, TVE_COLLAPSE);
}
else
{
m_treeCtrl.Expand(hItem, TVE_EXPAND);
}
}
*pResult = 0;
}
|
|
|
|
|
ok now. just now i made a mistake!
thank u for all!
|
|
|
|
|
hello, i m developing msnp15 in c++. so in display image there is a binary header and footer i want to know that whats that and how can i develop it for my application. is that provided by server or generate by us and whats the method to write that.
|
|
|
|
|
Hi all,
I am working with Visual Studio .Net 2005. I have created new Smart Device Project with MFC smart Device application. I have selected SDK application option. It should display the inbuilt menu, but the application is not displaying the menu. How to enable menu. please help.
|
|
|
|
|
There is also a mobile devices forum which may have people better skilled to help you. In this case, I think cross posting can be forgiven.
I do remember only having two top level menu items on my menu when I created an application for Windows Mobile 5 - each of which appeared in the bottom two corners, and popped up when I pressed a button on the actual device.
Maybe it sulks if you have too many?
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
Hi,
I am using CPropertySheet to create wizard, I want to put Header Bitmap and as well as want to change the background color of wizard.
I found lot of link related to put a header bitmap but none for change the color of wizard....
Please suggest the way to do so.
|
|
|
|
|
|
also see this[^]
The secret of life is not enjoyment
but education through experience.
- Swami Vivekananda.
|
|
|
|
|
hello all:
I have got a trouble in date time picker control
when i use the date time picker control to adjust the control time ,if i first select the hour field then i can only change the hour field ,even i set the cursor in the minutes field when i click the spin ,only the hour field changed,does this the control bug,how can i put the cursor in which where i chang which field
thanks !
a beginner
|
|
|
|
|
It works perfectly for me. i can change the hours, minutes and seconds as well.
|
|
|
|
|
why,can you tell me the reason?
i know the reason ,because i choose the enable edit property,when i disabled it worked fine
thanks
a beginner
modified on Wednesday, April 1, 2009 1:50 AM
|
|
|
|
|
I dont see any reason why your minutes will not change if you use the spin control.
open a new dialog based application. Add the date picker control. change the format to time from the combo box. and then run the application. It will work the way you wanted.
|
|
|
|
|
Check whether "Allow Edit" Property is enabled? If so disable it.
aks
|
|
|
|
|
Alright, I'm trying to incorporate TerminateProcess() into my progrms. I have two programs running at the same time, the first program opens the second via system("") and then continues to run a series of GetAsyncKeyState()checks that blocks input when certain keys are pressed. The second program is an annoying little game that runs through a random array of MessageBoxes. The issue I've hit is that when the second program finishes, the first program is still going--which means the BlockInput code is still ready to set off. What I'm trying to do is incorporate TerminateProcess() at the very end of the second program so that right before the second program finishes it closes the first, does anyone know how to do this?
|
|
|
|
|
Why not have the first program start the second using CreateProcess() and then wait on the process handle?
An alternative is to use a globally named event and have the first application wait on it (which is pretty much what my first suggestion is doing.)
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
Because I'm attending a High School that offers no programming class at all and thus I have no prior instructed knowledge and have no idea how to do that. I've attempted via examples from searching around but I couldn't get them to work because I just don't have enough knowledge at this point.
|
|
|
|
|
DWORD ExecuteProcess(LPCTSTR pCommandLine, LPCTSTR pDirectory = NULL, DWORD millisecondsTimeout = INFINITE)
{
TCHAR* pCmdLine = (TCHAR*) _alloca((lstrlen(pCommandLine) + 1) * sizeof(TCHAR));
lstrcpy(pCmdLine, pCommandLine);
STARTUPINFO startupInfo;
memset(&startupInfo, 0, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
PROCESS_INFORMATION processInfo;
memset(&processInfo, 0, sizeof(processInfo));
DWORD rval;
if (CreateProcess(NULL, pCmdLine, NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE, NULL, pDirectory, &startupInfo, &processInfo))
{
rval = WaitForSingleObject(processInfo.hProcess, millisecondsTimeout);
}
else
{
rval = GetLastError();
}
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
return rval;
}
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
okay, thanks for the tidbit of code but I still dont know where to insert it or how to tell it what to open
|
|
|
|
|
You call this function in the first program instead of the system function.
It runs the second program (given in one of the parameters), waits for the second program to finish, then the function returns, so you can carry on doing whatever the first program should do.
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
You call ExecuteProcess with the same command line you would use at a command prompt. The directory is what the current directory should be set to.
For example, ExecuteProcess(_T("C:\\Windows\\System32\\Notepad.exe win.ini"), _T("C:\\Windows"));
This is very simple code, but it illustrates the basic principles. Go to MSDN and read up on CreateProcess() and WaitForSingleObject() . Read up on multi-threading and synchronization. Experiment. Step through the code. Until you fully understand this code, you will not be qualified to write any code.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
I never did get an answer to my initial question
|
|
|
|
|
You can't do what you want. system doesn't give you back the identity of your process, so you have no way to (later) control it. You have to use some other mechanism to create the process, like (as Joe suggested) CreateProcess , which does give you the process identity (through the PID and a process handle in the case of CreateProcess ).
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
gamefreak2291 wrote: I never did get an answer to my initial question
Your original question was posted when Europe had just gone to bed, India was debating getting to eat its breakfast Bhaji, and the Americas were having their after work beer. Or in your case, doing their homework.
1/ You don't pay us - we'll answer if / when we feel like.
2/ I'll give you credit for not putting "URGENTZ" in your subject line!
Anyway, Joe has given you a very good answer - if you need details, functions like CreateProcess have very long documentation to read.
I wish you success with your course,
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
I am upgrading from an older version of Visual Studio to Visual Studio Express 9.0. In my code I have #include tapi.h. This causes an error. Does anyone know how to solve this?
|
|
|
|