MessageBox From OLE Server Comes Up Behind The App

MessageBox From OLE Server Comes Up Behind The App

You have a VB4-based OLE Automation server that has no main UI, anddisplays forms that are parented into Excel in response to various automationcalls. Sometimes you need to display a message box instead of a form. Ifyou haven’t yet parented any forms into Excel, the message box frequentlyappears behind Excel.To make sure that the message box appears where the user can see it–ifall your forms are modal–the best way is to compile the VB4 OLE Automationserver as an in-process server (DLL). The server becomes part of Excel’sprocess space, and all forms and message boxes are automatically parentedas you would expect them to be.If your forms are modeless, you cannot use the DLL approach. Your OLEAutomation server must be an EXE. The following workaround should do thetrick.Create a hidden, modeless form and use SetParent to make it a childof Excel’s main window. Make this the first thing you do when Excel getsan instance of your object. Create a Public (visible throughout your project,but not outside) method for the hidden modeless form. The Public methodtakes the same parameters as a message box, and its job is to call MsgBoxwith those parameters. When your server needs to display a message boxwhen no other form is parented to Excel, call this method. Excel shouldnever hide the message box.

See also  5 Ways to Improve Customer Experience

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist