File this under "there must be a way to do this in the Win32 API, but I couldn't find it".
I whipped this up one night last year, but never got around to putting it on the website. It's a message box with custom buttons. Let's hope something like this makes it into the framework some year.
You can have as many buttons as you'd like, and button width is determined by the length of each button's text. You can override this by setting AutoSizeButtons to false and ButtonWidth to whatever width you'd like.