あなたが使うことができます
function GetClassInfo(hInstance: HINST; lpClassName: PChar; var lpWndClass: TWndClass): BOOL;
これがレミーがやろうとしていたことだと思います。
何かのようなもの:
Function IsRichEdit(MyControl : TWinControl):Boolean;
var
Info : TWNDClass;
begin
Result := False;
if GetClassInfo(HInstance,PCHAR('RICHEDIT'),Info) and (Info.lpfnWndProc = MyControl.DefWndProc) then
Result := True
else if GetClassInfo(HInstance,PCHAR('RICHEDIT20A'),Info) and (Info.lpfnWndProc = MyControl.DefWndProc) then
Result := True
else if GetClassInfo(HInstance,PCHAR('RICHEDIT30A'),Info) and (Info.lpfnWndProc = MyControl.DefWndProc) then
Result := True
else if GetClassInfo(HInstance,PCHAR('RICHEDIT41A'),Info) and (Info.lpfnWndProc = MyControl.DefWndProc) then
Result := True
else if GetClassInfo(HInstance,PCHAR('RICHEDIT50A'),Info) and (Info.lpfnWndProc = MyControl.DefWndProc) then
Result := True
end;
Delphi> 2007を使用している場合は、「W」(ユニコード)バージョンもテストする必要がある場合があります(例:「RICHEDIT20W」)。
編集:コントロールに一致するようにInfo.WndProcテストを追加しました。
奇妙なことに、cxRichEditはリッチエディットウィンドウを使用するコントロールではないため、これはcxControlsでは機能しません(これは含まれているため、trueを返すにはcxControl.InnerControlを渡す必要があります)。
編集最初に作成したリッチエディットコントロール以上でこれを機能させることができませんでした。