Re: Inheritance and MFC
Hi Joe,
Why is a grid object not derived from CWnd in the first place?
I wanted to make the grid object independent of MFC.
The only reason I am using CObject is for Serialization.
I am using the registry and a few other MFC functions, OnDraw(), =
OnMouseMove(), etc.
I should actually make several layers, but it is what it is for now.
I noticed that the more I use the grid object, the more I have to keep =
adding scroll bars for pan, zoom, etc.
So, my idea was to make a CWnd GridSB Class that implements Scrollbars.
That class inherits from the Grid CObject class.
Then, I can leave the scroll bars inside of the CGrid Object, instead of =
Creating scroll bars each time.
This is basically what I have.
CGrid : public CObject
CGridSB: public CGrid, public CWnd
{
CScrollbar sb;
CreateScrollbars();
SetScreenRect(){ Position Scrollbars(); }
}
CView::OnDraw()
{
CGridSB sb;
sb.SetScreenRect(Rect);
sb.OnDraw(pDC);
}
Regards,
"Joseph M. Newcomer" <newcomer@flounder.com> wrote in message =
news:hndk83t2i52oo7o21fhrt0jpj8f5vn97u7@4ax.com...
Multiple inheritance is chancy in MFC. At least one rule is the CWnd =
class must be the
first class. But in this case, I don't see how a visible object like =
a grid could *not*
derive directly from CWnd, and since CWnd derives from CObject, there =
is no need for the
inheritance from CObject in the first place.
Why is a grid object not derived from CWnd in the first place?
joe
On Tue, 3 Jul 2007 02:49:21 -0700, "Nobody" <Nobody@yahoo.com> wrote:
Hi,
I have a grid object. The Grid Object inherits from CObject.
There are no controls and I was thinking about adding some. Zoom, Pan, =
etc.
So, I have extantiated a new class that inherits from CGrid and CWnd.
class CGridSB : public CGrid, public CWnd
Now, I would like to add some controls to the Grid Object.
The problem is that the controls needs an m_hWnd
I am not sure what to do?
VERIFY(c_sbHZoom.Create(
SBS_VERT | SBS_RIGHTALIGN | WS_CHILD |WS_BORDER,
Rect,
this,
1234)
);
_AFXWIN_INLINE void CScrollBar::ShowScrollBar(BOOL bShow)
{ ASSERT(::IsWindow(m_hWnd)); ::ShowScrollBar(m_hWnd, SB_CTL, bShow); =
}
I understand that the CGridSB oject needs to handle the Scrollbar =
messages, so I need a message map
and perphaps a DECLARE_DYNCREATE along with an IMPLEMENT_DYNCREATE =
member.
I just need to get past the m_hWnd error.
Thanks for your help,
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm