GUI frame work
-
Hi all! I'm working on a GUI frame work using Win32 C++. This GUI is based on classes and inheritance. I have stacked on something that might seem to be a little stupid! What's the best way to have access to the controls the most, and other vars of a window from another window! For example: // File Window.h class CWindow { // Functions public: // Vars private: // Other vars protected: } // File status.h class CStatusBar : CWindow { // Functions public: // Vars private: // Other vars protected: } // File MainFrame.h class CMainFrame : CWindow { // Functions public: // Vars private: // Other vars protected: // Status bar control CStatusBar* sb; } // File dialog.h class CDialogBox : CWindow { // Functions public: // Vars private: // Other vars protected: } I want the members of CDialogBox to have access to the status bar of the CMainFrame, even if the CMainframe is the parent of the parent of the CDialogBox I don't want to use MFC way or a way like: Constructor(CWindow* parent, ..), or global variables. If there's no such a way then what of the ways that I mensioned (and I don't like) would be more professional?? Thanks very much On whatever reply!
-
Hi all! I'm working on a GUI frame work using Win32 C++. This GUI is based on classes and inheritance. I have stacked on something that might seem to be a little stupid! What's the best way to have access to the controls the most, and other vars of a window from another window! For example: // File Window.h class CWindow { // Functions public: // Vars private: // Other vars protected: } // File status.h class CStatusBar : CWindow { // Functions public: // Vars private: // Other vars protected: } // File MainFrame.h class CMainFrame : CWindow { // Functions public: // Vars private: // Other vars protected: // Status bar control CStatusBar* sb; } // File dialog.h class CDialogBox : CWindow { // Functions public: // Vars private: // Other vars protected: } I want the members of CDialogBox to have access to the status bar of the CMainFrame, even if the CMainframe is the parent of the parent of the CDialogBox I don't want to use MFC way or a way like: Constructor(CWindow* parent, ..), or global variables. If there's no such a way then what of the ways that I mensioned (and I don't like) would be more professional?? Thanks very much On whatever reply!
Dennis L wrote:
I don't want to use MFC way
Is there a reason why ?
Dennis L wrote:
what of the ways that I mensioned (and I don't like) would be more professional??
Use MFC. Why reinvent the wheel ?? Create a set of classes for a GUI framework is something very difficult. You will never be able to have something as powerfull as the MFC (or at leat not without spending a LOT of hours of work).
-
Dennis L wrote:
I don't want to use MFC way
Is there a reason why ?
Dennis L wrote:
what of the ways that I mensioned (and I don't like) would be more professional??
Use MFC. Why reinvent the wheel ?? Create a set of classes for a GUI framework is something very difficult. You will never be able to have something as powerfull as the MFC (or at leat not without spending a LOT of hours of work).
I have worked on MFC and I think that is a powerful package, but I'd like to create a very simple framework for now to check my abilities and what it would be like to create your own framework! If you please could tell me a way other than MFC I would appreciate it! Thanks again!
-
Hi all! I'm working on a GUI frame work using Win32 C++. This GUI is based on classes and inheritance. I have stacked on something that might seem to be a little stupid! What's the best way to have access to the controls the most, and other vars of a window from another window! For example: // File Window.h class CWindow { // Functions public: // Vars private: // Other vars protected: } // File status.h class CStatusBar : CWindow { // Functions public: // Vars private: // Other vars protected: } // File MainFrame.h class CMainFrame : CWindow { // Functions public: // Vars private: // Other vars protected: // Status bar control CStatusBar* sb; } // File dialog.h class CDialogBox : CWindow { // Functions public: // Vars private: // Other vars protected: } I want the members of CDialogBox to have access to the status bar of the CMainFrame, even if the CMainframe is the parent of the parent of the CDialogBox I don't want to use MFC way or a way like: Constructor(CWindow* parent, ..), or global variables. If there's no such a way then what of the ways that I mensioned (and I don't like) would be more professional?? Thanks very much On whatever reply!
First, why would a dialog need access to the mainframe's statusbar ? Second, I think that you need to have a parent window for a child dialog box, me think that win32 needs it ( I'm no expert on win32, so YMMV ). If your dialog box doesn't have a pointer to the mainframe, you will need to keep a global variable to the mainframe ( either a variable, or a global scope function that returns a pointer to the mainframe ) one other way would be to use some kind of messaging mecanism, either with ::SendMessage/::PostMessage or with a Observer/Observable pattern. for example ( high level pseudo code )
CDialog::DoSomethingToMainFrameStatusBar()
{
CStatusBar* pStatusBar = YourMainFrameManager::GetStatusbar();}
// where YourMainFrameManager is a class that contains pointers to "windows" ( or componements ) of the mainframe ( this class will need to know about the mainframe.
CStatusBar* YourMainFrameManager::GetStatusbar()
{
return pMainFrame->getStatusBar();
}
Maximilien Lincourt Your Head A Splode - Strong Bad