ID: Q157247
The information in this article applies to:
Calling IShellFolder::CreateViewObject() for a file system folder causes an Access Violation.
Using the file system implementation of IShellFolder::CreateViewObject() results in the shell sending a yet-to-be documented message, the WM_GETISHELLBROWSER message (currently WM_USER+7) to the hWndOwner. The shell assumes the HWND passed in as the owner responds properly to the WM_GETISHELLBROWSER message. If it doesn't, there is an access violation in Shell32.DLL.
The shell expects that the hWndOwner will supply the IShellBrowser interface to it in response to the WM_GETISHELLBROWSER message.
For example, if your window is a dialog, the following snippet of code would respond correctly to the message.
...
#ifndef WM_GETISHELLBROWSER
#define WM_GETISHELLBROWSER (WM_USER+7)
#endif
...
IShellBrowser *m_psb;
...
BOOL DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
...
case WM_GETISHELLBROWSER:
SetWindowLong(hDlg, DWL_MSGRESULT, (LONG)m_psb);
break;
...
Microsoft has confirmed this to be a problem in the products listed at the beginning of this article.
Additional query words:
Keywords : kbExtension kbNameSpace kbNTOS400 kbWinOS2000 kbWinOS95 kbWinOS98 kbGrpShell
Issue type : kbprb
Last Reviewed: December 17, 1998