TreeView, ListView, Modeless Dialog.
elie e.e. bensaci -- ebensaci@nortel.ca Monday, September 30, 1996 Hi there, Environment: Visual C++ 4.2, Win 95 I'm building an application using a splitter (1x2), and I have as well a modeless dialog boss which I can invoke from a toolbar menu. The modeless dialog box contain a property sheet control (3 property pages), every property page has a tree control. What I want to do is every time the user clicks on the tree control in the modeless dialog box, I want changes to appear in the ListView, How can I get this working? ------------------------------------------------ | | | Modeless Dialog | | | | | | ------------------------ | TreeView | ListView | | | | | | | | | | | | TreeControl | | | | | | | | | | | | | | | | ------------------------------------------------- ------------------------- In the modeless dialog box: =========================== Through a menu item (or toolbar), How can I make a specific property page to show when invoking the modeless dialog box? Thanks a lot.
Gene Sewell -- genes@fast.net Wednesday, October 02, 1996 [Mini-digest: 2 responses] >Environment: Visual C++ 4.2, Win 95 > >I'm building an application using a splitter (1x2), and I have as well a modeless dialog >boss which I can invoke from a toolbar menu. The modeless dialog box contain a property >sheet control (3 property pages), every property page has a tree control. What I want to >do is every time the user clicks on the tree control in the modeless dialog box, I want >changes to appear in the ListView, How can I get this working? I do this by sending user defined messages from view to view. For example, if a user clicks on a tree leaf, the tree view sends a message to the list view like: if (m_ProfileDoc->mx_ListWnd) m_ProfileDoc->mx_ListWnd->SendMessage(WM_NEW_TREE_LEAF, 0, 0); I use the same doc for both views, the doc has a pointer to both windows, and to any data that the list window needs to display. Simple, but works well. Cheers! ---- It is impossible to make anything foolproof because fools are so ingenious. -unknown -----From: Mario Contestabile People seem to think there is something inherently built-into MFC which automagically updates data in one control when an action in another control occurs. If you want to update the data displayed by your list control when a node is selected in the tree control, a) capture the TVN_SELCHANGED message for the tree control b) update your list control You could even allow for dragging between the two controls. I'm assuming you indeed have a tree and a list control, because your drawing mentions a treeview and a listview. mcontest@universal.com
Gabriel Parlea-Visalon -- Gabriel@derivs.demon.co.uk Wednesday, October 02, 1996 In your message dated Monday 30, September 1996 you wrote : > Hi there, > > Environment: Visual C++ 4.2, Win 95 > > I'm building an application using a splitter (1x2), and I have as well a modeless dialog > boss which I can invoke from a toolbar menu. The modeless dialog box contain a property > sheet control (3 property pages), every property page has a tree control. What I want to > do is every time the user clicks on the tree control in the modeless dialog box, I want > changes to appear in the ListView, How can I get this working? > > ------------------------------------------------ > | | | Modeless Dialog > | | | > | | | ------------------------ > | TreeView | ListView | | | > | | | | | > | | | | TreeControl | > | | | | | > | | | | | > | | | | | > ------------------------------------------------- ------------------------- > > In the modeless dialog box: > =========================== > > Through a menu item (or toolbar), How can I make a specific property page to show when > invoking the modeless dialog box? > > Thanks a lot. > Add ON_NOTIFY_REFLECT in your CTreeCtrl's message map or ON_NOTIFY in the property page's message map. For more information see Technical Note 60 which the Class Libray Reference entry for CTreeCtrl suggests also! There is an example of using reflected messages in TN062 and most probably in the samples. CListView has one member function GetListCtrl() which returns a reference to the CListCtrl it is associated with. Use that to update the ListView. That is, if what you call ListView is derived from CListView. The order of appearance of property pages in the property sheet is conditioned by the order of AddPage()'s. So, for example, keep the pointers to your property pages in an array and set the AddPage() start index through the menu. I hope this helps you, Gabriel -- Gabriel Parlea-Visalon Software Engineer Derivative Trading Systems gabriel@derivs.demon.co.uk
| Вернуться в корень Архива |