Microsoft KB Archive/117825

{|
 * width="100%"|

Handling COMMDLG File Open Network Button Under Win32s

 * }

Q117825

-

The information in this article applies to:


 * Microsoft Win32s versions 1.1, 1.15, 1.2

-

SUMMARY
When you run a Win32-based application under Win32s on top of Windows 3.1 without a network, the File Open common dialog box still has a Network button.

Under Windows NT, the File Open common dialog box that appears when you call GetOpenFileName has a Network button only when a network is present. The API (application programming interface) will either use the Network button in the dialog box template if it exists or dynamically add the button if it is not in the template and there is a network present. If there is no network present but the template contains a Network button, the button will be hidden.

The dialog box template that is included with the Windows Software Development Kit (SDK) does not have a Network button because Windows does not include a network. When the 16-bit Windows-based application is executed under Windows for Workgroups or under Windows NT, the Network button is dynamically added, because these operating systems have built-in networking.

The template that is included with the Win32 SDK has a Network button. If the Win32-based application is run under a non-networked Windows 3.1, the Network button is shown; however it is nonfunctional because there is no network. This happens because the COMMDLG.DLL that provides Windows 3.1 with the common dialog boxes does not recognize networks. Therefore, GetOpenFileName does not remove the Network button from the template if there is no network.

One solution is to leave the button in the template, determine when you are running under Win32s, and include OFN_NONETWORKBUTTON in the OPENFILENAME structure when Win32s is present but there is no network present. Define a hook function that during WM_INITDIALOG checks the Flags field of the OPENFILENAME struct that lParam is pointing to. If OFN_NONETWORKBUTTON is used, call ShowWindow(GetDlgItem(hWnd, psh14), SW_HIDE).

Alternatively, if your application will most likely run on networked Windows 3.1 machines, you can install the COMMDLG.DLL that ships with Windows for Workgroups 3.11 on all machines, because it is a redistributable dynamic-link library (DLL). This DLL checks to see if a network is present and removes the Network button for you if it is not.

Additional query words: 1.10 1.20

Keywords :

Issue type :

Technology : kbWin32sSearch kbWin32s110 kbWin32s115 kbWin32s120