Inheritance in C ++ / CX does not match inheritance in C ++. This is because the C ++ / CX ref classes are actually COM objects that implement inheritance through a variety of aggregations.
The example I was working with was
public ref class MyTextBox : public TextBox {
MyTextBox() {};
~MyTextBox() {};
virtual void OnKeyDown(KeyEventArgs^ e) override {
TextBox::OnKeyDown(e);
};
};
, TextBox:: OnKeyDown() MyTextBox:: OnKeyDown(). , ++/CX COM, .
Visual Studio 11 Developer Preview Solution
, OnKeyDown() IControlOverrides, MyTextBox, TextBox, . TextBox, TextBox, MyTextBox, , . COM, ++, baseclass :
virtual void OnKeyDown(KeyEventArgs^ e) override {
struct IControlOverrides^ ico;
HRESULT hr = __cli_baseclass->__cli_QueryInterface(const_cast<class Platform::Guid%>(reinterpret_cast<const class Platform::Guid%>(__uuidof(struct IControlOverrides^))),reinterpret_cast<void**>(&ico));
if (!hr) {
hr = ico->__cli_OnKeyDown(e);
};
};
- Visual Studio 11
, VS 11 Beta. "__super::" - , , , :
virtual void OnKeyDown(KeyEventArgs^ e) override {
IControlOverrides::OnKeyDown(e);
};
VS , OnKeyDown() (IControlOverrides).
!