Darrin,
Are you still pursuing an answer on this? Hope so...
Your best approach might be to host your Java class inside the MFC app. This way MFC could enforce modality when you call DoModal() on your dialog. Here are three ways to do this:
(1) You could use the Invocation API. The Invocation API on Win32 also supports interoperability between native windows/GDI and Java AWT. I'm not sure if this approach will meet all of your goals without knowing more about your app.
(2) You could possibly host the Java controls inside the MFC dialog using Java/ActiveX bridging technology from Sun or another vendor.
(3) Change you MFC Dialog to an HtmlDialog, make an Applet-derived class for your Java application, and host your Java applet in the HTML layout for the dialog using Sun's technology for hosting Java inside Internet Explorer. You may need to grant the applet greater security permissions if need be too.
If these approaches don't work, instead of rewriting everything in C++, you may want to take a look at NewJ Library. It'll let you use the Java API naturally inside your C++/MFC app.
NewJ info:
http://www.pure-native.com/newj.html