With the code listed, you created two completely separate functions: CEditEx::MyFunc and CInputCtrl::MyFunc. If you have a pointer to a CInputCtrl, it will call CInputCtrl::MyFunc. To use multiple inheritance, what you want is for the code on the 2nd derivation to be more generic and not window oriented. Ths second branch should not be derived from CWnd, CObject, etc. Sort of like this: class CGeneric { virtual bool DoSomething(); } class CMyEdit : public CEdit, CGeneric { bool DoSomething(); }; The CGeneric class won't have direct access to any windowing features. It's similar to using the global functions, but with more inheritance control.