When you sink events for ambient properties, if you check for DISPID_AMBIENT_DLCONTROL and set the value to be returned to DLCTL_FORCEOFFLINE, the WebBrowser control does not behave as expected. Instead of going to the cache for all navigations, it still connects to the appropriate Internet server.
↑ Back to the top
Although the DLCTL_FORCEOFFLINE is passed through to the WebBrowser control when the navigation occurs, it stills checks for an Internet connection and connects to the Internet if the connection is available.
↑ Back to the top
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.
↑ Back to the top
Steps to Reproduce Behavior
- Start Microsoft Visual C++ 6.0.
- Create a new MFC AppWizard(exe) project.
- Type a project name in the Project name edit box, and then click OK.
- Select Single Document, and then click Next.
- Choose the defaults on the rest of the screens in the MFC Appwizard except the last, in step 6.
- At the last screen, select the View class and change the Base class found on the lower left to CHtmlView.
- Click Finish.
- Open the .cpp file for your view class and include the following header file:
- Invoke the ClassWizard by pressing CTRL+W.
- Under Class name, find the View class.
- Scroll through the messages until you find OnAmbientProperty. Click Add Function and then click Edit Code.
- Add the following code to the OnAmbientProperty member function and save the file:
if (dispid == DISPID_AMBIENT_DLCONTROL)
{
pvar->vt = VT_I4;
pvar->lVal |= DLCTL_FORCEOFFLINE;
return TRUE;
}
- Go to Internet Options in Internet Explorer. (This is on the View menu for Internet Explorer 4.x versions and on the Tools menu for Internet Explorer 5.)
- In the Internet Options dialog box, click Delete Files under Temporary Internet Files, and then close the dialog box.
- Now compile and run your Visual C++ project. The browser will navigate to the Web page even if it is not located in the cache.
↑ Back to the top