Here is a dirtier hack that shouldn't require overriding WndProc at all (untested!):
procedure TForm12.cmniOpenRecentAdvancedDrawItem(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
begin
// pop the HDC state that TForm saved...
RestoreDC(ACanvas.Handle, -1);
// Prevent the OS from drawing the arrow...
ExcludeClipRect(ACanvas.Handle, ARect.Left, ARect.Top, ARect.Right, ARect.Bottom);
// save the new state so TForm will restore it...
SaveDC(ACanvas.Handle);
end;
procedure TForm12.cmniOpenRecentDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
...
// OnAdvancedDrawItem is fired after OnDrawItem, so don't exclude here...
// ExcludeClipRect(ACanvas.Handle, ARect.Left, ARect.Top, ARect.Right, ARect.Bottom);
end;