如何在 TWebBrowser 中忽略加速器字符(设计模式)

How to ignore accelerator chars in TWebBrowser (design mode)

我遇到的问题与这个问题中描述的问题基本相同:

How to make TWebBrowser ignore accelerator chars of others controls?

因此 TWebBrowser 处于设计模式,TAction 中的快捷键正在执行相关操作。

解决方案是:

type
  TWebBrowser = class(SHDocVw.TWebBrowser)
    procedure CNChar(var Message: TWMChar); message CN_CHAR;
  end;

...

procedure TWebBrowser.CNChar(var Message: TWMChar);
begin
  Message.Result := 0;
end;

我想尝试上述问题中描述的解决方案,但我无法将其转换为 C++ Builder 代码。我如何翻译 - 并且 - 是否有其他解决方案没有下降 TWebBrowser 和覆盖 CNChar 程序(也许在基于 TForm 的事件中这样做)?

C++ Builder 的翻译(归功于 Remy Lebeau)。

class TWebBrowser : public Shdocvw::TWebBrowser
{
private:
    MESSAGE void __fastcall CNChar(TWMChar &Message);

public:
    inline __fastcall virtual TWebBrowser(TComponent* AOwner) : Shdocvw::TWebBrowser(AOwner) { }

BEGIN_MESSAGE_MAP
    VCL_MESSAGE_HANDLER(CN_CHAR, TWMChar, CNChar);
END_MESSAGE_MAP(Shdocvw::TWebBrowser)
};

...

void __fastcall TWebBrowser::CNChar(TWMChar &Message)
{
    Message.Result = 0;
}