|
Still wounded Sir, still wounded, indeed...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
hi,
i want to EXPAND/COLLAPSE an COLLAPSE/EXPAND item when i single-click an item。
and the TVS_SINGLEEXPAND style causes the item being selected to expand and the item being unselected to collapse,but i still want the unselected to keep the old state.
now, i map the NM_CLICK:
<br />
void CTreeControlDlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult) <br />
{<br />
TRACE("OnClickTree1!\n");<br />
<br />
HTREEITEM hItem = m_treeCtrl.GetSelectedItem();<br />
if ( (hItem != NULL) && m_treeCtrl.ItemHasChildren(hItem))<br />
{<br />
...
}<br />
*pResult = 0;<br />
}<br />
thank u very much!!!
|
|
|
|
|
CTreeCtrl::Expand [^]?
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
i do like this, but using <bool bexpand=""> is not a good idea.anybody have the right one?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))
{
static BOOL bExpand = FALSE;
if (bExpand)
{
m_treeCtrl.Expand(hItem, TVE_COLLAPSE);
bExpand = FALSE;
}
else
{
m_treeCtrl.Expand(hItem, TVE_EXPAND);
bExpand = TRUE;
}
}
*pResult = 0;
}
|
|
|
|
|
If I'm understanding what you want to do, you can't use that static BOOL bExpand; .
Instead, you need to determine the current state of the item you clicked on. Use CTreeCtrl::GetItemState [^] to determine if the hTreeItem is currently expanded or not, and then act based on that result.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
thank u !and another problem blew. thank u again!
|
|
|
|
|
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
|
|
|
|