static LRESULT CALLBACK explorer_wnd_proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { explorer_info *info = (explorer_info*)GetWindowLongPtrW(hwnd,EXPLORER_INFO_INDEX); IExplorerBrowser *browser = NULL; if(info) browser = info->browser; switch(uMsg) { case WM_DESTROY: IExplorerBrowser_Release(browser); HeapFree(GetProcessHeap(),0,info); PostQuitMessage(0); break; case WM_QUIT: do_exit(wParam); case WM_SIZE: update_window_size(info,HIWORD(lParam),LOWORD(lParam)); break; default: return DefWindowProcW(hwnd,uMsg,wParam,lParam); } return 0; }
static LRESULT CALLBACK explorer_wnd_proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { explorer_info *info = (explorer_info*)GetWindowLongPtrW(hwnd,EXPLORER_INFO_INDEX); IExplorerBrowser *browser = NULL; WINE_TRACE("(hwnd=%p,uMsg=%u,wParam=%lx,lParam=%lx)\n",hwnd,uMsg,wParam,lParam); if(info) browser = info->browser; switch(uMsg) { case WM_DESTROY: IExplorerBrowser_Unadvise(browser,info->advise_cookie); IExplorerBrowser_Destroy(browser); IExplorerBrowser_Release(browser); ILFree(info->pidl); IImageList_Release(info->icon_list); HeapFree(GetProcessHeap(),0,info); SetWindowLongPtrW(hwnd,EXPLORER_INFO_INDEX,0); PostQuitMessage(0); break; case WM_QUIT: do_exit(wParam); case WM_NOTIFY: return explorer_on_notify(info,(NMHDR*)lParam); case WM_COMMAND: if(HIWORD(wParam)==BN_CLICKED) { switch(LOWORD(wParam)) { case BACK_BUTTON: IExplorerBrowser_BrowseToObject(browser,NULL,SBSP_NAVIGATEBACK); break; case FORWARD_BUTTON: IExplorerBrowser_BrowseToObject(browser,NULL,SBSP_NAVIGATEFORWARD); break; case UP_BUTTON: IExplorerBrowser_BrowseToObject(browser,NULL,SBSP_PARENT); break; } } break; case WM_SIZE: update_window_size(info,HIWORD(lParam),LOWORD(lParam)); break; default: return DefWindowProcW(hwnd,uMsg,wParam,lParam); } return 0; }