HRESULT STDMETHODCALLTYPE CAddressBand::OnWinEvent( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT *theResult) { CComPtr<IWinEventHandler> winEventHandler; HRESULT hResult; RECT rect; if (theResult) *theResult = 0; switch (uMsg) { case WM_WININICHANGE: break; case WM_COMMAND: if (wParam == IDM_TOOLBARS_GOBUTTON) { fGoButtonShown = !SHRegGetBoolUSValueW(L"Software\\Microsoft\\Internet Explorer\\Main", L"ShowGoButton", FALSE, TRUE); SHRegSetUSValueW(L"Software\\Microsoft\\Internet Explorer\\Main", L"ShowGoButton", REG_SZ, fGoButtonShown ? (LPVOID)L"yes" : (LPVOID)L"no", fGoButtonShown ? 8 : 6, SHREGSET_FORCE_HKCU); if (!fGoButton) CreateGoButton(); ::ShowWindow(fGoButton,fGoButtonShown ? SW_HIDE : SW_SHOW); GetWindowRect(&rect); SendMessage(m_hWnd,WM_SIZE,0,MAKELPARAM(rect.right-rect.left,rect.bottom-rect.top)); // broadcast change notification to all explorer windows } break; } hResult = fAddressEditBox->QueryInterface(IID_PPV_ARG(IWinEventHandler, &winEventHandler)); if (FAILED_UNEXPECTEDLY(hResult)) return hResult; return winEventHandler->OnWinEvent(hWnd, uMsg, wParam, lParam, theResult); }
/* Dialogue procedure for general message boxes */ static INT_PTR CALLBACK SHDlgProcEx(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { DLGDATAEX *d = (DLGDATAEX *)GetWindowLongPtrW(hDlg, DWLP_USER); TRACE("(%p,%u,%ld,%ld) data %p\n", hDlg, uMsg, wParam, lParam, d); switch (uMsg) { case WM_INITDIALOG: { /* FIXME: Not sure where native stores its lParam */ SetWindowLongPtrW(hDlg, DWLP_USER, lParam); d = (DLGDATAEX *)lParam; TRACE("WM_INITDIALOG: %p, %s,%p,%p\n", hDlg, debugstr_w(d->lpszId), d->dlgProc, (void*)d->lParam); if (d->dlgProc) return d->dlgProc(hDlg, uMsg, wParam, d->lParam); return TRUE; } case WM_COMMAND: switch (LOWORD(wParam)) { case IDYES: wParam = MAKELONG(IDOK, HIWORD(wParam)); /* Fall through ... */ case IDNO: if (LOWORD(wParam) == IDNO) wParam = MAKELONG(IDCANCEL, HIWORD(wParam)); /* Fall through ... */ case IDOK: case IDCANCEL: TRACE("WM_COMMAND: id=%s data=%p\n", LOWORD(wParam) == IDOK ? "IDOK" : "IDCANCEL", d); if (SendMessageW(GetDlgItem(hDlg, IDC_ERR_DONT_SHOW), BM_GETCHECK, 0L, 0L)) { DWORD dwZero = 0; /* The user clicked 'don't show again', so set the key */ SHRegSetUSValueW(szDontShowKey, d->lpszId, REG_DWORD, &dwZero, sizeof(dwZero), SHREGSET_DEFAULT); } if (!d->dlgProc || !d->dlgProc(hDlg, uMsg, wParam, lParam)) EndDialog(hDlg, wParam); return TRUE; } break; default: break; } if (d && d->dlgProc) return d->dlgProc(hDlg, uMsg, wParam, lParam); return FALSE; }