-void CSearchBar::InitializeSearchBar()
-{
- CreateWindowExW(0, WC_STATIC, L"Search by any or all of the criteria below.",
- WS_CHILD | WS_VISIBLE,
- 10, 10, 200, 40,
- m_hWnd, NULL,
- _AtlBaseModule.GetModuleInstance(), NULL);
-
- CreateWindowExW(0, WC_STATIC, L"All or part &of the file name:",
- WS_CHILD | WS_VISIBLE,
- 10, 50, 500, 20,
- m_hWnd, NULL,
- _AtlBaseModule.GetModuleInstance(), NULL);
- m_fileName = CreateWindowExW(WS_EX_CLIENTEDGE, WC_EDITW, NULL,
- WS_BORDER | WS_CHILD | WS_VISIBLE,
- 10, 70, 100, 20,
- m_hWnd, NULL,
- _AtlBaseModule.GetModuleInstance(), NULL);
-
- CreateWindowExW(0, WC_STATIC, L"A &word or phrase in the file:",
- WS_CHILD | WS_VISIBLE,
- 10, 100, 500, 20,
- m_hWnd, NULL,
- _AtlBaseModule.GetModuleInstance(), NULL);
- m_query = CreateWindowExW(WS_EX_CLIENTEDGE, WC_EDITW, NULL,
- WS_BORDER | WS_CHILD | WS_VISIBLE,
- 10, 120, 100, 20,
- m_hWnd, NULL,
- _AtlBaseModule.GetModuleInstance(), NULL);
- Edit_LimitText(m_query, MAX_PATH);
-
- CreateWindowExW(0, WC_STATIC, L"&Look in:",
- WS_CHILD | WS_VISIBLE,
- 10, 150, 500, 20,
- m_hWnd, NULL,
- _AtlBaseModule.GetModuleInstance(), NULL);
- m_path = CreateWindowExW(WS_EX_CLIENTEDGE, WC_EDITW, NULL,
- WS_BORDER | WS_CHILD | WS_VISIBLE,
- 10, 180, 100, 20,
- m_hWnd, NULL,
- _AtlBaseModule.GetModuleInstance(), NULL);
-
- CreateWindowExW(0, WC_BUTTON, L"Sea&rch",
- WS_BORDER | WS_CHILD | WS_VISIBLE,
- 10, 210, 100, 20,
- m_hWnd, NULL,
- _AtlBaseModule.GetModuleInstance(), NULL);
+LRESULT CSearchBar::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
+{
+ SetSearchInProgress(FALSE);
+
+ HWND hCombobox = GetDlgItem(IDC_SEARCH_COMBOBOX);
+ IImageList *pImageList;
+ HRESULT hResult = SHGetImageList(SHIL_SMALL, IID_PPV_ARG(IImageList, &pImageList));
+ SendMessage(hCombobox, CBEM_SETIMAGELIST, 0, FAILED_UNEXPECTEDLY(hResult) ? 0 : reinterpret_cast<LPARAM>(pImageList));
+
+ SendMessage(hCombobox, CBEM_SETEXTENDEDSTYLE,
+ CBES_EX_CASESENSITIVE | CBES_EX_NOSIZELIMIT, CBES_EX_CASESENSITIVE | CBES_EX_NOSIZELIMIT);
+ HWND hEditControl = reinterpret_cast<HWND>(SendMessage(hCombobox, CBEM_GETEDITCONTROL, 0, 0));
+ hResult = CAddressEditBox_CreateInstance(IID_PPV_ARG(IAddressEditBox, &m_AddressEditBox));
+ if (FAILED_UNEXPECTEDLY(hResult))
+ return hResult;
+
+ CComPtr<IShellService> pShellService;
+ hResult = fAddressEditBox->QueryInterface(IID_PPV_ARG(IShellService, &pShellService));
+ if (FAILED_UNEXPECTEDLY(hResult))
+ return hResult;
+ hResult = fAddressEditBox->Init(hCombobox, fEditControl, 0, pSite);
+ if (FAILED_UNEXPECTEDLY(hResult))
+ return hResult;
+
+ CComPtr<IDispatch> pDispatch;
+ hResult = fAddressEditBox->QueryInterface(IID_PPV_ARG(IDispatch, &pDispatch));
+ if (FAILED_UNEXPECTEDLY(hResult))
+ return hResult;
+ DISPPARAMS params = {0};
+ hResult = pDispatch->Invoke(DISPID_NAVIGATECOMPLETE2, GUID_NULL, 0, DISPATCH_METHOD, ¶ms, NULL, NULL, NULL);
+
+ hResult = pShellService->SetOwner(NULL);
+ if (FAILED_UNEXPECTEDLY(hResult))
+ return hResult;
+
+ return 0;