// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_FRAME_FIND_DIALOG_H_ #define CHROME_FRAME_FIND_DIALOG_H_ #include #include #include "base/memory/ref_counted.h" #include "base/strings/string16.h" #include "resource.h" #include "grit/chrome_frame_dialogs.h" class ChromeFrameAutomationClient; class CFFindDialog : public CDialogImpl { public: enum { IDD = IDD_CHROME_FRAME_FIND_DIALOG }; BEGIN_MSG_MAP(CFFindDialog) MESSAGE_HANDLER(WM_DESTROY, OnDestroy) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) COMMAND_ID_HANDLER(IDOK, OnFind) COMMAND_ID_HANDLER(IDCANCEL, OnCancel) END_MSG_MAP() CFFindDialog(); void Init(ChromeFrameAutomationClient* automation_client); LRESULT OnDestroy(UINT msg, WPARAM wparam, LPARAM lparam, BOOL& handled); // NOLINT LRESULT OnFind(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // NOLINT LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // NOLINT LRESULT OnInitDialog(UINT msg, WPARAM wparam, LPARAM lparam, BOOL& handled); // NOLINT private: // Since the message loop we expect to run in isn't going to be nicely // calling IsDialogMessage(), we need to hook the wnd proc and call it // ourselves. See http://support.microsoft.com/kb/q187988/ bool InstallMessageHook(); bool UninstallMessageHook(); static LRESULT CALLBACK GetMsgProc(int code, WPARAM wparam, LPARAM lparam); static HHOOK msg_hook_; // Store the text we searched for last to determine whether we are doing a // "Find" or a "Find Next". string16 last_find_text_; // We don't own these, and they must exist at least as long as we do. scoped_refptr automation_client_; }; #endif // CHROME_FRAME_FIND_DIALOG_H_