覆盖的MessageFilter问题 [英] MessageFilter problem with overriding

查看:68
本文介绍了覆盖的MessageFilter问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图建立一个MessageFilter,但是我不知道如何正确地重写PreFilterMessage方法.

我试过了:

public ref class MyMessageFilter : System::Windows::Forms::IMessageFilter{
public: MyMessageFilter(){
    }
virtual bool PreFilterMessage(Message^objMessage) override{
                    if(objMessage->WParam.ToInt32() == 27)
                        return true;
                    return false;
            }
};



但我收到一个错误:
错误C3766:"MyMessageFilter"已在系统中实现:: Windows :: Forms :: IMessageFilter :: PreFilterMessage(System :: Windows :: Forms :: Message%)-Schnittstellenmethode bereitstellen.

我究竟做错了什么?感谢您的帮助!

解决方案

您没有声明要覆盖的方法.您告诉编译器您是第一次声明它,并且使用 virtual 表示可以使用 override 覆盖它.

试试这个:

public ref class MyMessageFilter : System::Windows::Forms::IMessageFilter{public: MyMessageFilter(){    }

override bool PreFilterMessage(Message^objMessage) override{                    
   return objMessage->WParam.ToInt32() == 27;
}
};



http://msdn.microsoft.com/en-us/library/9fkccyh4(VS .71).aspx [ ^ ]


祝你好运!


它仍然给出相同的错误:

错误C3766:``MyMessageFilter''必须为接口方法``bool System :: Windows :: Forms :: IMessageFilter :: PreFilterMessage(System :: Windows :: Forms :: Message%)''提供实现>

I tryed to buid a MessageFilter, but I don''t know how to override the PreFilterMessage method correctly.

I tryed:

public ref class MyMessageFilter : System::Windows::Forms::IMessageFilter{
public: MyMessageFilter(){
    }
virtual bool PreFilterMessage(Message^objMessage) override{
                    if(objMessage->WParam.ToInt32() == 27)
                        return true;
                    return false;
            }
};



But I get an error:
error C3766: "MyMessageFilter" muss eine Implementierung für die bool System::Windows::Forms::IMessageFilter::PreFilterMessage (System::Windows::Forms::Message %)-Schnittstellenmethode bereitstellen.

What am I doing wrong? Thanks for your help!

解决方案

You did not declare the method to override. You tell the compiler you are declaring it for the first time and with virtual you indicate it could be overridden using override.

Try this:

public ref class MyMessageFilter : System::Windows::Forms::IMessageFilter{public: MyMessageFilter(){    }

override bool PreFilterMessage(Message^objMessage) override{                    
   return objMessage->WParam.ToInt32() == 27;
}
};



http://msdn.microsoft.com/en-us/library/9fkccyh4(VS.71).aspx[^]


Good luck!


It still gives the same error:

error C3766: ''MyMessageFilter'' must provide an implementation for the interface method ''bool System::Windows::Forms::IMessageFilter::PreFilterMessage(System::Windows::Forms::Message %)''


这篇关于覆盖的MessageFilter问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆