If you mean `DISPEX_IDISPATCH_IMPL` macro, it's rather specific to MSHTML, which has a single "base" class that's used by tens of different objects. It's a single macro saving us a ton of code, but it's just one very specific macro, not much to share, really. (There are also macros in `oleobj.c` that... I didn't reject. Note that they forward between different objects, so that's not exactly what your targeting here).
I agree that there is room for improvements with our approach to COM interfaces. I was considering extending widl at some point too (but never got it into a shape). My thinking was to have a separate code generator rather than using more macros, somewhat similar to how we allow a dedicated mode for registration. widl could generate 'implementation' source file based on some input IDL with something like coclasses desribing implemented objects. This source file could define all vtbls, forward shared functions, maybe even default `IUnknown`-alike implementation or class factories. (It would probably also need to generate a header file that the rest of module would use to access it, or the whole thing could just be a header). Anyway, I'm not sure, just throwing another idea for a consideration.
(I was also considering "MSHTML" mode; a lot of MSHTML code that just forwards to Gecko could be generated in a similar way, that that's, again, not really something useful outside MSHTML.)