Aric Stewart aric@codeweavers.com writes:
@@ -182,19 +182,26 @@ static UINT CALLBACK create_view_window2_hook(HWND dlg, UINT msg, WPARAM wParam,
hr = IShellView2_GetCurrentInfo(shell_view2, &folder_settings); ok(SUCCEEDED(hr), "GetCurrentInfo returned %#x\n", hr);
ok(folder_settings.ViewMode == FVM_LIST, "view mode is %d, expected %d\n", folder_settings.ViewMode, FVM_LIST);
ok(folder_settings.ViewMode == FVM_DETAILS, "view mode is %d, expected %d\n", folder_settings.ViewMode, FVM_DETAILS); hr = IShellView2_DestroyViewWindow(shell_view2); ok(SUCCEEDED(hr), "DestroyViewWindow returned %#x\n", hr);
view_params.pvid = &VID_Details;
folder_settings.ViewMode = FVM_LIST;
folder_settings.fFlags = 0;
view_params.pvid = NULL; hr = IShellView2_CreateViewWindow2(shell_view2, &view_params);
ok(SUCCEEDED(hr), "CreateViewWindow2 returned %#x\n", hr);
/*
* Windows XP is unable to recreate the ViewWindow2 returning
* A Catastrophic failure error
*/
So why can't it recreate it? Do you need to clean up something else beforehand?
Alexandre Julliard wrote:
Aric Stewart aric@codeweavers.com writes:
@@ -182,19 +182,26 @@ static UINT CALLBACK create_view_window2_hook(HWND dlg, UINT msg, WPARAM wParam,
hr = IShellView2_GetCurrentInfo(shell_view2, &folder_settings); ok(SUCCEEDED(hr), "GetCurrentInfo returned %#x\n", hr);
ok(folder_settings.ViewMode == FVM_LIST, "view mode is %d, expected %d\n", folder_settings.ViewMode, FVM_LIST);
ok(folder_settings.ViewMode == FVM_DETAILS, "view mode is %d, expected %d\n", folder_settings.ViewMode, FVM_DETAILS); hr = IShellView2_DestroyViewWindow(shell_view2); ok(SUCCEEDED(hr), "DestroyViewWindow returned %#x\n", hr);
view_params.pvid = &VID_Details;
folder_settings.ViewMode = FVM_LIST;
folder_settings.fFlags = 0;
view_params.pvid = NULL; hr = IShellView2_CreateViewWindow2(shell_view2, &view_params);
ok(SUCCEEDED(hr), "CreateViewWindow2 returned %#x\n", hr);
/*
* Windows XP is unable to recreate the ViewWindow2 returning
* A Catastrophic failure error
*/
So why can't it recreate it? Do you need to clean up something else beforehand?
Hi,
In an effort to squash the last test failures (W2K3), I had a go at this one.
When I add a DestroyWindow() the tests succeed on my W2K3. I'm however not sure it's the correct way or if I'm even close:
hr = IShellView2_DestroyViewWindow(shell_view2); ok(SUCCEEDED(hr), "DestroyViewWindow returned %#x\n", hr);
+ DestroyWindow(view_params.hwndView); + view_params.pvid = &VID_Details; hr = IShellView2_CreateViewWindow2(shell_view2, &view_params); ok(SUCCEEDED(hr), "CreateViewWindow2 returned %#x\n", hr);
The DestroyWindow() succeeds on W2K3 and Vista but fails (ERROR_INVALID_WINDOW_HANDLE) on W2K.
(Even though DestroyWindow() succeeds on Vista is doesn't fix the failure on that platform).