combobox.h

Go to the documentation of this file.
00001 /**
00002  * \file mgui/combobox.h
00003  * \brief MGUI::COMBOBOX definitions
00004  *
00005  * \if NODOC
00006  * $Id: combobox.h_v 1.14 2005/03/31 16:57:07 fileserver!dwilliss Exp $
00007  *
00008  * $Log: combobox.h_v $
00009  * Revision 1.14  2005/03/31 16:57:07  fileserver!dwilliss
00010  * Rename one of our types to MIUNICODE because it conflicted with a Microsoft #define
00011  *
00012  * Revision 1.13  2004/01/02 22:21:19  mju
00013  * Need to override setenabled for form too.
00014  *
00015  * Revision 1.12  2003/12/22 14:16:03  mju
00016  * Make SetEnabled public.
00017  *
00018  * Revision 1.11  2003/12/19 22:07:57  mju
00019  * Override setenabled for X.
00020  *
00021  * Revision 1.10  2003/11/17 18:10:22  mju
00022  * Add combobox::sizeToContentWidth.
00023  *
00024  * Revision 1.9  2003/10/03 19:58:19  linux32build!build
00025  * Doxygen
00026  *
00027  * Revision 1.8  2003/09/15 13:49:32  fileserver!dwilliss
00028  * Doxygen
00029  *
00030  * Revision 1.7  2003/09/11 17:05:20  mju
00031  * Use cast in IniWrite to resolve ambiguity.
00032  *
00033  * Revision 1.6  2003/09/10 21:15:25  mju
00034  * Use ID for id.
00035  *
00036  * Revision 1.5  2003/09/10 16:42:21  mju
00037  * nc.
00038  *
00039  * Revision 1.4  2003/09/05 17:09:43  mju
00040  * AddItem using const MISTRING&.
00041  *
00042  * Revision 1.3  2003/04/09 20:47:44  dwilliss
00043  * Don't define _T in templates. Mac's ctype.h defines a global _T
00044  *
00045  * Revision 1.2  2003/01/16 21:35:32  mju
00046  * Fix incl guard test.
00047  *
00048  * Revision 1.1  2003/01/16 21:13:02  mju
00049  * Initial revision
00050  * \endif
00051 **/
00052 
00053 #ifndef  INC_MGUI_COMBOBOX_H
00054 #define  INC_MGUI_COMBOBOX_H
00055 
00056 #ifndef INC_MGUI_CTRL_H
00057 #include <mgui/ctrl.h>
00058 #endif
00059 
00060 #ifndef  INC_MGUI_LISTITEM_H
00061 #include <mgui/listitem.h>
00062 #endif
00063 
00064 namespace MGUI {
00065 
00066 #ifndef GENERATING_DOXYGEN_OUTPUT
00067 #ifdef X_NATIVE
00068 class XMLIST;
00069 #endif
00070 #endif // GENERATING_DOXYGEN_OUTPUT
00071 
00072 //===================================================================================================================
00073 //! ComboBox control.
00074 //! At present this is implemented as an OptionMenu for X.
00075 class CTRL_COMBOBOX : public MGUI::CTRL {
00076    public:
00077 
00078       enum STYLE {
00079          STYLE_Default =   0x00,
00080          STYLE_Sorted =    0x01
00081          };
00082 
00083       //! Constructor.
00084       CTRL_COMBOBOX (
00085          );
00086 
00087       //! Destructor.
00088       virtual ~CTRL_COMBOBOX (
00089          );
00090 
00091       //! Add single item with MISTRING or TEXTID.
00092       //! If control was created with STYLE_Sorted then the combo will be resorted after the item
00093       //! is added, otherwise the item will be added to the end of the list.
00094       //! @return Zero-based index of item added or error < 0.
00095       int AddItem (
00096          ID id,                                 //!< ID to attach to item
00097          const MISTRING& string,                //!< String to show in list
00098          bool resize = true                     //!< Attempt to resize if needed to fit new item string
00099          );
00100 
00101       //! Add single item with string from resource lookup.
00102       //! If control was created with STYLE_Sorted then the list will be resorted after the item
00103       //! is added, otherwise the item will be added to the end of the list.
00104       //! @return Zero-based index of item added or error < 0.
00105       int AddItem (
00106          ID id,                                 //!< ID to attach to item
00107          const char *string,                    //!< String for resource lookup
00108          bool resize = true                     //!< Attempt to resize if needed to fit new item string
00109          );
00110 
00111       //! Add multiple items.
00112       void AddItems (
00113          const MGUI::LISTITEMDEF *items,        //!< Items to add, terminated by item with NULL string
00114          bool resize = true                     //!< Attempt to resize if needed to fit largest item string
00115          );
00116 
00117       //! Add items to combobox for unit selection.
00118       //! Item IDs will be equal to UnitIDs.
00119       void AddUnitItems (
00120          int UnitType,                          //!< Unit type
00121          int DftUnitID = 0                      //!< Default unit ID
00122          );
00123 
00124       //! Create control.
00125       void Create (
00126          MGUI::LAYOUT_PANE_BASE& ParentPane,    //!< Parent pane
00127          const MGUI::LISTITEMDEF *items = 0,    //!< Initial item set, 0 for none
00128          int listheight = 7,                    //!< Maximum list height when dropped down in characters
00129          int width = 0,                         //!< Width in 'typical' characters, 0 for default
00130          MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00131          STYLE style = STYLE_Default
00132          );
00133 
00134       //! Delete all items from control.
00135       void DeleteAllItems (
00136          );
00137 
00138       //! Delete item from list given index.
00139       void DeleteItem (
00140          int index                           //!< Zero-based index of item to delete
00141          );
00142 
00143       //! Delete item from list given ID.
00144       void DeleteItemID (
00145          ID id                            //!< ID of item to delete
00146          );
00147 
00148       //! Retrieve number of items in the list.
00149       int GetCount (
00150          ) const;
00151 
00152    #ifdef WIN32_MFC
00153       //! Get reference to MFC control (MFC only).
00154       CComboBox& GetCtrl (
00155          ) { return (m_ctrl); }
00156    #endif
00157 
00158       //! Get index to item from ID.
00159       //! @return Zero-based index or -1 if no matching item found.
00160       int GetIndexFromID (
00161          ID id                            //!< ID of item to retrieve index of
00162          ) const;
00163 
00164       //! Get ID associated with list item.
00165       //! @return ID specified when item was added.
00166       ID GetItemID (
00167          int index                           //!< Zero-based index of item
00168          ) const;
00169 
00170       //! Get text string associated with list item.
00171       //! @return String containing text, will be empty if invalid item.
00172       MISTRING GetItemString (
00173          int index                           //!< Zero-based index of item
00174          ) const;
00175 
00176       //! Get currently selected item.
00177       //! @return Zero-based index of selected item or -1 if none selected.
00178       int GetSelectedItem (
00179          ) const;
00180 
00181       //! Get ID of currently selected item.
00182       //! @return ID or -1 if item was not found or none selected.
00183       ID GetSelectedItemID (
00184          ) const;
00185 
00186       //! Read setting from INI file.
00187       //! If Create() has already been performed the control's state will be updated.
00188       void IniRead (
00189          INIHANDLE IniHandle,                //!< Handle to INI file to read from, 0 for default
00190          const char *IniGroup,               //!< INI group to read from
00191          const char *IniField,               //!< INI field to read from
00192          bool notify = true                  //!< Call OnSelection() if control has already been created
00193          );
00194 
00195       //! Write currently selected item ID to INI file.
00196       void IniWrite (
00197          INIHANDLE IniHandle,                //!< Handle to INI file to read from, 0 for default
00198          const char *IniGroup,               //!< INI group to read from
00199          const char *IniField                //!< INI field to read from
00200          ) const { ::IniWrite(IniHandle,IniGroup,IniField,static_cast<INT32>(GetSelectedItemID())); }
00201 
00202       //! Insert item at specified position.
00203       //! Unlike the AddItem method this does not cause the list to be resorted.
00204       //! @return Zero-based index of item added or error < 0.
00205       int InsertItem (
00206          int index,                          //!< Zero-based index of position at which item should be inserted
00207          ID id,                           //!< ID to attach to item
00208          const MISTRING& string              //!< String to show in combo
00209          );
00210 
00211       //! Determine if specified item is selected.
00212       bool IsItemSelected (
00213          int index                           //!< Zero-based index of item
00214          ) const;
00215 
00216    #ifdef X_NATIVE
00217       //! Set whether control is enabled.
00218       virtual void SetEnabled (
00219          bool enabled = true
00220          );
00221    #endif
00222 
00223       //! Select item using zero-based index.
00224       //! If item is not visible the list will be scrolled to make it visible.
00225       void SetSelectedItem (
00226          int index                           //!< Zero-based index of item, -1 to have no item selected
00227          );
00228 
00229       //! Select item using item ID.
00230       //! If item does not exist then no item will be selected.
00231       //! If item is not visible the list will be scrolled to make it visible.
00232       void SetSelectedItemID (
00233          ID id                            //!< ID of item to select
00234          );
00235 
00236       //! Set whether items are to be sorted or not.
00237       void SetSorted (
00238          bool sorted = true
00239          );
00240 
00241       //! Resize control to be able to show widest item.
00242       void SizeToContentWidth (
00243          );
00244 
00245    protected:
00246 
00247       //! Called when user makes selection.
00248       //! Derived class must call corresponding base class method BEFORE performing its own processing.
00249       virtual void OnSelection ();
00250 
00251    private:
00252    #ifndef GENERATING_DOXYGEN_OUTPUT
00253 
00254    #ifdef WIN32_MFC
00255       class MyComboBox : public CComboBox {
00256          public:
00257             MyComboBox (
00258                MGUI::CTRL_COMBOBOX& guictrl
00259                ): m_guictrl(guictrl)
00260                { }
00261             virtual ~MyComboBox (
00262                ) { }
00263          protected:
00264             afx_msg void OnSelendok ();
00265             DECLARE_MESSAGE_MAP()
00266          private:
00267             MGUI::CTRL_COMBOBOX& m_guictrl;
00268          };
00269       friend class MyComboBox;
00270 
00271       MyComboBox m_ctrl;
00272    #endif
00273 
00274    #ifdef X_NATIVE
00275       Widget m_text;
00276       Widget m_arrowpb;
00277       XMLIST *m_pxmlist;
00278       Widget m_listshell;
00279       int m_listheight;
00280 
00281       static void CB_ArrowActivate (Widget, CTRL_COMBOBOX*, void*);
00282       static void CB_ListBrowseSelect (Widget, CTRL_COMBOBOX*, void*);
00283       static void EH_Shell (Widget, CTRL_COMBOBOX*, XEvent*, Boolean*);
00284       void PopdownShell ();
00285       void PopupShell ();
00286    #endif
00287 
00288       CTRL_COMBOBOX (const CTRL_COMBOBOX&);
00289       CTRL_COMBOBOX& operator= (const CTRL_COMBOBOX&);
00290    #endif // GENERATING_DOXYGEN_OUTPUT
00291    };
00292 
00293 DEFINE_ENUM_OPERATORS(MGUI::CTRL_COMBOBOX::STYLE);
00294 
00295 
00296 //-------------------------------------------------------------------------------------------------------------------
00297 //! Convenience template for COMBOBOX control to allow method in container class to be called.
00298 template <class _CT> class CTRL_COMBOBOX_T : public MGUI::CTRL_COMBOBOX {
00299    public:
00300       //! Constructor.
00301       explicit CTRL_COMBOBOX_T (
00302          ): m_pContainer(0), m_pfOnSelection(0)
00303          { }
00304 
00305       //! Create control.
00306       void Create (
00307          MGUI::LAYOUT_PANE_BASE& ParentPane,    //!< Parent pane
00308          _CT *pContainer,                       //!< Pointer to callback container class
00309          void (_CT::*pfOnSelection)(),          //! Callback function pointer
00310          const MGUI::LISTITEMDEF *items = 0,    //!< Initial item set, 0 for none
00311          int listheight = 7,                    //!< Maximum list height when dropped down in characters
00312          int width = 0,                         //!< Width in 'typical' characters, 0 for default
00313          MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00314          STYLE style = STYLE_Default
00315          ) {
00316          m_pContainer = pContainer;
00317          m_pfOnSelection = pfOnSelection;
00318          CTRL_COMBOBOX::Create(ParentPane,items,listheight,width,sizealign,style);
00319          }
00320 
00321    private:
00322       #ifndef GENERATING_DOXYGEN_OUTPUT
00323       _CT *m_pContainer;
00324       void (_CT::*m_pfOnSelection)();
00325 
00326       virtual void OnSelection (
00327          ) {
00328          CTRL_COMBOBOX::OnSelection();
00329          if (m_pContainer != 0) (m_pContainer->*m_pfOnSelection)();
00330          }
00331       #endif // GENERATING_DOXYGEN_OUTPUT
00332    };
00333 
00334 
00335 //===================================================================================================================
00336 //! Form containing label and Combobox control.
00337 class FORM_COMBOBOX : public MGUI::FORM_COMPOSITE {
00338    public:
00339 
00340       //! Default constructor.
00341       FORM_COMBOBOX (
00342          );
00343 
00344       //! Destructor.
00345       virtual ~FORM_COMBOBOX (
00346          );
00347 
00348       //! Add single item with MISTRING or TEXTID.
00349       //! If control was created with STYLE_Sorted then the combo will be resorted after the item
00350       //! is added, otherwise the item will be added to the end of the list.
00351       //! @return Zero-based index of item added or error < 0.
00352       int AddItem (
00353          ID id,                              //!< ID to attach to item
00354          const MISTRING& string,                //!< String to show in list
00355          bool resize = true                     //!< Attempt to resize if needed to fit new item string
00356          ) { return (m_combobox.AddItem(id,string,resize)); }
00357 
00358       //! Add single item with MIUNICODE* string.
00359       //! If control was created with STYLE_Sorted then the combo will be resorted after the item
00360       //! is added, otherwise the item will be added to the end of the list.
00361       //! @return Zero-based index of item added or error < 0.
00362       int AddItem (
00363          ID id,                              //!< ID to attach to item
00364          const MIUNICODE *string,                  //!< String to show in list
00365          bool resize = true                     //!< Attempt to resize if needed to fit new item string
00366          ) { return (m_combobox.AddItem(id,string,resize)); }
00367 
00368       //! Add single item with string from resource lookup.
00369       //! If control was created with STYLE_Sorted then the list will be resorted after the item
00370       //! is added, otherwise the item will be added to the end of the list.
00371       //! @return Zero-based index of item added or error < 0.
00372       int AddItem (
00373          ID id,                              //!< ID to attach to item
00374          const char *string,                    //!< String for resource lookup
00375          bool resize = true                     //!< Attempt to resize if needed to fit new item string
00376          ) { return (m_combobox.AddItem(id,string,resize)); }
00377 
00378       //! Add multiple items.
00379       void AddItems (
00380          const MGUI::LISTITEMDEF* items,        //!< Items to add, terminated by item with NULL string
00381          bool resize = true                     //!< Attempt to resize if needed to fit largest item string
00382          ) { m_combobox.AddItems(items,resize); }
00383 
00384       //! Add items to combobox for unit selection.
00385       //! Item IDs will be equal to UnitIDs.
00386       void AddUnitItems (
00387          int UnitType,                          //!< Unit type
00388          int DftUnitID = 0                      //!< Default unit ID
00389          ) { m_combobox.AddUnitItems(UnitType,DftUnitID); }
00390 
00391       //! Create form with label from resource lookup.
00392       void Create (
00393          MGUI::LAYOUT_PANE_BASE& ParentPane,    //!< Parent pane
00394          const char* label,                     //!< Label string for resource lookup
00395          const MGUI::LISTITEMDEF *items = 0,    //!< Initial item set, 0 for none
00396          int listheight = 7,                    //!< Maximum list height when dropped down in characters
00397          int width = 0,                         //!< Width in 'typical' characters, 0 for default
00398          MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00399          MGUI::CTRL_COMBOBOX::STYLE style = MGUI::CTRL_COMBOBOX::STYLE_Default,
00400          MGUI::CTRL_LABEL::STYLE labelstyle = MGUI::CTRL_LABEL::STYLE_LeftNoWrap
00401          );
00402 
00403       //! Create form with Unicode label.
00404       void Create (
00405          MGUI::LAYOUT_PANE_BASE& ParentPane,    //!< Parent pane
00406          const MISTRING& label,                 //!< Label string
00407          const MGUI::LISTITEMDEF *items = 0,    //!< Initial item set, 0 for none
00408          int listheight = 7,                    //!< Maximum list height when dropped down in characters
00409          int width = 0,                         //!< Width in 'typical' characters, 0 for default
00410          MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00411          MGUI::CTRL_COMBOBOX::STYLE style = MGUI::CTRL_COMBOBOX::STYLE_Default,
00412          MGUI::CTRL_LABEL::STYLE labelstyle = MGUI::CTRL_LABEL::STYLE_LeftNoWrap
00413          );
00414 
00415       //! Delete all items from control.
00416       void DeleteAllItems (
00417          ) { m_combobox.DeleteAllItems(); }
00418 
00419       //! Delete item from list given index.
00420       void DeleteItem (
00421          int index                           //!< Zero-based index of item to delete
00422          ) { m_combobox.DeleteItem(index); }
00423 
00424       //! Delete item from list given ID.
00425       void DeleteItemID (
00426          ID id                            //!< ID of item to delete
00427          ) { m_combobox.DeleteItemID(id); }
00428 
00429       //! Get reference to CTRL_COMBOBOX in form.
00430       CTRL_COMBOBOX& GetComboBox (
00431          ) { return (m_combobox); }
00432 
00433       //! Get reference to CTRL_COMBOBOX in form.
00434       const CTRL_COMBOBOX& GetComboBox (
00435          ) const { return (m_combobox); }
00436 
00437       //! Retrieve number of items in the list.
00438       int GetCount (
00439          ) const { return (m_combobox.GetCount()); }
00440 
00441       //! Get index to item from ID.
00442       //! @return Zero-based index or -1 if no matching item found.
00443       int GetIndexFromID (
00444          ID id                            //!< ID of item to retrieve index of
00445          ) const { return (m_combobox.GetIndexFromID(id)); }
00446 
00447       //! Get ID associated with list item.
00448       //! @return ID specified when item was added.
00449       ID GetItemID (
00450          int index                           //!< Zero-based index of item
00451          ) const { return (m_combobox.GetItemID(index)); }
00452 
00453       //! Get text string associated with list item.
00454       //! @return String containing text, will be empty if invalid item.
00455       MISTRING GetItemString (
00456          int index                           //!< Zero-based index of item
00457          ) const { return (m_combobox.GetItemString(index)); }
00458 
00459       //! Get label control if any.
00460       //! Usually the label control is only retrieved for alignment purposes.
00461       MGUI::CTRL_LABEL& GetLabel (
00462          ) { return (m_label); }
00463 
00464       //! Get currently selected item.
00465       //! @return Zero-based index of selected item or -1 if none selected.
00466       int GetSelectedItem (
00467          ) const { return (m_combobox.GetSelectedItem()); }
00468 
00469       //! Get ID of currently selected item.
00470       //! @return ID or -1 if item was not found or none selected.
00471       ID GetSelectedItemID (
00472          ) const { return (m_combobox.GetSelectedItemID()); }
00473 
00474       //! Insert item at specified position.
00475       //! Unlike the AddItem method this does not cause the list to be resorted.
00476       //! @return Zero-based index of item added or error < 0.
00477       int InsertItem (
00478          int index,                          //!< Zero-based index of position at which item should be inserted
00479          ID id,                           //!< ID to attach to item
00480          const MISTRING& string              //!< String to show in combo
00481          ) { return (m_combobox.InsertItem(index,id,string)); }
00482 
00483       //! Determine if specified item is selected.
00484       bool IsItemSelected (
00485          int index                           //!< Zero-based index of item
00486          ) const { return (m_combobox.IsItemSelected(index)); }
00487 
00488    #ifdef X_NATIVE
00489       //! Set whether control is enabled.
00490       virtual void SetEnabled (
00491          bool enabled = true
00492          );
00493    #endif
00494 
00495       //! Select item using zero-based index.
00496       //! If item is not visible the list will be scrolled to make it visible.
00497       void SetSelectedItem (
00498          int index                           //!< Zero-based index of item, -1 to have no item selected
00499          ) { m_combobox.SetSelectedItem(index); }
00500 
00501       //! Select item using item ID.
00502       //! If item does not exist then no item will be selected.
00503       //! If item is not visible the list will be scrolled to make it visible.
00504       void SetSelectedItemID (
00505          ID id                            //!< ID of item to select
00506          ) { m_combobox.SetSelectedItemID(id); }
00507 
00508       //! Set whether items are to be sorted or not.
00509       void SetSorted (
00510          bool sorted = true
00511          ) { m_combobox.SetSorted(sorted); }
00512 
00513    protected:
00514 
00515       //! Called when user makes selection.
00516       //! Derived class must call corresponding base class method BEFORE performing its own processing.
00517       virtual void OnSelection ();
00518 
00519    private:
00520       #ifndef GENERATING_DOXYGEN_OUTPUT
00521 
00522       MGUI::CTRL_COMBOBOX_T<FORM_COMBOBOX> m_combobox;
00523       MGUI::CTRL_LABEL m_label;
00524 
00525       FORM_COMBOBOX (const FORM_COMBOBOX&);
00526       FORM_COMBOBOX& operator= (const FORM_COMBOBOX&);
00527       #endif // GENERATING_DOXYGEN_OUTPUT
00528    };
00529 
00530 
00531 //-------------------------------------------------------------------------------------------------------------------
00532 //! Convenience template for COMBOBOX control to allow method in container class to be called.
00533 template <class _CT> class FORM_COMBOBOX_T : public MGUI::FORM_COMBOBOX {
00534    public:
00535       //! Constructor.
00536       explicit FORM_COMBOBOX_T (
00537          ): m_pContainer(0), m_pfOnSelection(0)
00538          { }
00539 
00540       //! Create form with label from resource lookup.
00541       void Create (
00542          MGUI::LAYOUT_PANE_BASE& ParentPane,    //!< Parent pane
00543          const char* label,                     //!< Label string for resource lookup
00544          _CT *pContainer,                       //!< Pointer to callback container class
00545          void (_CT::*pfOnSelection)(),          //! Callback function pointer
00546          const MGUI::LISTITEMDEF *items = 0,    //!< Initial item set, 0 for none
00547          int listheight = 7,                    //!< Maximum list height when dropped down in characters
00548          int width = 0,                         //!< Width in 'typical' characters, 0 for default
00549          MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00550          MGUI::CTRL_COMBOBOX::STYLE style = MGUI::CTRL_COMBOBOX::STYLE_Default,
00551          MGUI::CTRL_LABEL::STYLE labelstyle = MGUI::CTRL_LABEL::STYLE_LeftNoWrap
00552          ) {
00553          m_pContainer = pContainer;
00554          m_pfOnSelection = pfOnSelection;
00555          FORM_COMBOBOX::Create(ParentPane,label,items,listheight,width,sizealign,style);
00556          }
00557 
00558       //! Create form with Unicode label.
00559       void Create (
00560          MGUI::LAYOUT_PANE_BASE& ParentPane,    //!< Parent pane
00561          const MISTRING& label,                 //!< Label string
00562          _CT *pContainer,                       //!< Pointer to callback container class
00563          void (_CT::*pfOnSelection)(),          //! Callback function pointer
00564          const MGUI::LISTITEMDEF *items = 0,    //!< Initial item set, 0 for none
00565          int listheight = 7,                    //!< Maximum list height when dropped down in characters
00566          int width = 0,                         //!< Width in 'typical' characters, 0 for default
00567          MGUI::LAYOUT_SIZEALIGN sizealign = MGUI::LAYOUT_SIZEALIGN_FixedSize,
00568          MGUI::CTRL_COMBOBOX::STYLE style = MGUI::CTRL_COMBOBOX::STYLE_Default,
00569          MGUI::CTRL_LABEL::STYLE labelstyle = MGUI::CTRL_LABEL::STYLE_LeftNoWrap
00570          ) {
00571          m_pContainer = pContainer;
00572          m_pfOnSelection = pfOnSelection;
00573          FORM_COMBOBOX::Create(ParentPane,label,items,listheight,width,sizealign,style);
00574          }
00575 
00576    private:
00577       #ifndef GENERATING_DOXYGEN_OUTPUT
00578       _CT *m_pContainer;
00579       void (_CT::*m_pfOnSelection)();
00580 
00581       virtual void OnSelection (
00582          ) {
00583          FORM_COMBOBOX::OnSelection();
00584          if (m_pContainer != 0) (m_pContainer->*m_pfOnSelection)();
00585          }
00586       #endif // GENERATING_DOXYGEN_OUTPUT
00587    };
00588 
00589 //===================================================================================================================
00590 
00591 }  // End namespace MGUI
00592 
00593 #endif   // INC_MGUI_COMBOBOX_H

Generated on Wed May 31 15:26:43 2006 for TNTsdk by  doxygen 1.3.8-20040913