|
You are trying to show a top-level menu as a popup menu which is not possible.
You will need to get a submenu of IDR_MENU_TREE, like this:
menu.LoadMenu(IDR_MENU_TREE);
CMenu* pSubMenu = menu.GetSubmenu(0);
if (pSubMenu != NULL)
{
pSubMenu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
pp.x, pp.y, AfxGetMainWnd());
}
Hope this helps
|
|
|
|
|
hello,
i need to know steps to create a modeless dialog box in a parent SDI application.I know that a CreateDialog function is to be used;but how?
please guide
thanks
|
|
|
|
|
m_pDlg = new CMyDialog;
m_pDlg->Create (IDD_MYDIALOG);
m_pDlg->ShowWindow (SW_SHOW);
Note:Modeless dialog boxes are dismissed by calling DestroyWindow, not End-Dialog. You mustn't allow CDialog::OnOK or CDialog::OnCancel to be called on a modeless dialog box, because both call EndDialog.
Also create it on the heap always.
suhredayan There is no spoon.
|
|
|
|
|
It is a little long to explain how to use moldeless dialogs so I'll point you to an article: here[^] is a good article that explains the basis of modeless dialogs.
And, BTW, what do you mean by 'dialog box in a parent SDI application' ? The difference between modal and modeless dialogs is just that the dialog isn't 'blocking' (that means the parent window will still be active with a modeless dialog). The modeless dialog is not 'embedded' in the parent window.
|
|
|
|
|
cedric moonen wrote:
And, BTW, what do you mean by 'dialog box in a parent SDI application' ?
I think the second parameter below was meant by the parent.
explicit CDialog(
LPCTSTR lpszTemplateName,
CWnd* pParentWnd = NULL
);
suhredayan There is no spoon.
|
|
|
|
|
Yes of course I know that you can set a parent to a modeless dialog but I think what he really wants to do (as seen also in his previous post) is a dialog which is 'included' in the parent. So, that is a dialog that has no title bar and that is pasted on the parent. But I'm not sure so that's why I asked for some details.
|
|
|
|
|
thanks,
i was successful in creating a modeless dialog box.But i am still not able to use the Ondestroy() function.Kindly tell me the same.As you said that modeless dialog can't be opened in mdi window(which is exactly what i was trying).Then it means we will have to display it as child window.The properties section of dialog editor offers similar option.Is it correct?
thanks
|
|
|
|
|
Hello!
I need to show CPropertySheet object with not first page opened.
SetActivePage in OnInitDialog doesn't work. Can anybody help?
Oleg Chebotar
|
|
|
|
|
Why doesn't SetActivePage() work? It is what I call from the propertysheet's OnInitDialog() function and it works fine for me. I just make sure it is the last thing called in OnInitDialog() before it returns.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
I have declared the following in my application.
CMap<cstring,lpcstr,cwnd*,cwnd*> m_map;
I have a windows explorer like setup.
When i click a node in the tree i need to display an MDI Window.
So i have mapped the node item's text (LPCSTR) to that of the window pointer .So when i click a node i use CMap to get the window pointer and display the window.
Now when i alternatively click the windows i get the window pointer and i want to correspondingly shift the focus on the tree items.
So my question is how do i look up the key ( i.e LPCSTR) when i have the value (i.e.. CWnd*).
laiju
|
|
|
|
|
I have declared the following in my application.
"CMap < CString,LPCSTR,CWnd*,CWnd* > m_map"
I have a windows explorer like setup.
When i click a node in the tree i need to display an MDI Window.
So i have mapped the node item's text (LPCSTR) to that of the window pointer .So when i click a node i use CMap to get the window pointer and display the window.
Now when i alternatively click the windows i get the window pointer and i want to correspondingly shift the focus on the tree items.
So my question is how do i look up the key ( i.e LPCSTR) when i have the value (i.e.. CWnd*).
.
laiju
|
|
|
|
|
Is there any reason you're using CMap instead of map, in the C++ standard library ? CMap, CList, CArray,etc. were all written only as a stopgap until the stl came online. They are really crappy in comparison.
You need to build a second map that goes the other way. Even if you iterate through the keys collection, checking for the value ( which is a very lousy thing to have to do ), there's no guarentee that your value appears only once, so there's no guarentee you'll find the right key.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
You'll need to iterate through all keys and check if each key's value matches the CWnd* you're searching for.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
But that only works if each CWnd is only in there once. And it's damn ugly.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
True. What he really needs is a multimap.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Does multimap let you search the values ?
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Sorry, I meant a bi-directional map, not a multi-map.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
I have used map and multimap , and read about but never used hash_map and hash_multimap . What exactly do you mean by a bi-directional map? I always thought bi-directional containers were containers that had both forward and reverse iterators, but that definition does not seem to be what is being discussed here. What I think you mean is a map where both the key and value are unique, and has a find() member that can find either the key or the value. Is there such a beast? If so what is it called and where can I get it?
Currently I am just using a map for this functionality, I check to make sure the value is unique before I add a new value to the map, and I sequentially iterate the map, comparing values, until I find the keyvalue I am looking for. If there is a better implementation out there I would be interested in learning about it.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
PJ Arends wrote:
What I think you mean is a map where both the key and value are unique, and has a find() member that can find either the key or the value.
Yes, exactly.
PJ Arends wrote:
If so what is it called and where can I get it?
I don't know. I'm tempted to write one, but I doubt I'll come up with anything revolutionary (i.e. very efficient). A hashmap of pairs, with uniqueness enforced on values is what comes to mind.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Thanks Ravi. I thought you were refering to an already existing implementation that I did not know about. I guess I have to stick to my home-brewed hack.
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
An off-the-sheld bidirectional map is provided here[^]; unfortunately, it doesn't work with MSVC 7.1. For a more comprehensive solution, allow me to suggest you take a look at the Boost Multi-index Containers Library[^], which enables the construction of bidirectional maps and more.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
Want a Boost forum in Code Project? Vote here[^]!
|
|
|
|
|
Thanks Joaquín, your CP article looks interesting. I will DL the code and play with it to see if it fits my needs
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" - mYkel - 21 Jun '04
"There's not enough blatant self-congratulatory backslapping in the world today..." - HumblePie - 21 Jun '05
Within you lies the power for good - Use it!
|
|
|
|
|
a tought ...
if the strings are unique, make a map that points to ( a pointer to ) a structure containing a CWnd and a HTREEITEM
when you create the CWnd, attach the structure to the CWnd ( as a member of the class )
when you create the Tree Item, attach the structure to the Item ( CTreeCtrl::SetItemData )
when you click on the window, you can find exactly which item to highlight; and when you click on the tree item you have the pointer to the CWnd.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
I want to build a background service application, which means when the user start the application, it will just show an icon in the task bar. And of course user can double click the icon to configure the service setting.
So the issue is how to put it into the task bar...
|
|
|
|
|
It's a testament to how great this site is that when I do a google in response to people who ask questions that have obviously been answered a million times online before, the first[^] hit refers back to the Code Project.
Christian Graus - Microsoft MVP - C++
|
|
|
|