1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_FRAME_FIND_DIALOG_H_
6 #define CHROME_FRAME_FIND_DIALOG_H_
11 #include "base/memory/ref_counted.h"
12 #include "base/strings/string16.h"
14 #include "grit/chrome_frame_dialogs.h"
16 class ChromeFrameAutomationClient
;
18 class CFFindDialog
: public CDialogImpl
<CFFindDialog
> {
20 enum { IDD
= IDD_CHROME_FRAME_FIND_DIALOG
};
22 BEGIN_MSG_MAP(CFFindDialog
)
23 MESSAGE_HANDLER(WM_DESTROY
, OnDestroy
)
24 MESSAGE_HANDLER(WM_INITDIALOG
, OnInitDialog
)
25 COMMAND_ID_HANDLER(IDOK
, OnFind
)
26 COMMAND_ID_HANDLER(IDCANCEL
, OnCancel
)
30 void Init(ChromeFrameAutomationClient
* automation_client
);
32 LRESULT
OnDestroy(UINT msg
, WPARAM wparam
,
33 LPARAM lparam
, BOOL
& handled
); // NOLINT
34 LRESULT
OnFind(WORD wNotifyCode
, WORD wID
,
35 HWND hWndCtl
, BOOL
& bHandled
); // NOLINT
36 LRESULT
OnCancel(WORD wNotifyCode
, WORD wID
,
37 HWND hWndCtl
, BOOL
& bHandled
); // NOLINT
38 LRESULT
OnInitDialog(UINT msg
, WPARAM wparam
,
39 LPARAM lparam
, BOOL
& handled
); // NOLINT
43 // Since the message loop we expect to run in isn't going to be nicely
44 // calling IsDialogMessage(), we need to hook the wnd proc and call it
45 // ourselves. See http://support.microsoft.com/kb/q187988/
46 bool InstallMessageHook();
47 bool UninstallMessageHook();
48 static LRESULT CALLBACK
GetMsgProc(int code
, WPARAM wparam
, LPARAM lparam
);
49 static HHOOK msg_hook_
;
51 // Store the text we searched for last to determine whether we are doing a
52 // "Find" or a "Find Next".
53 string16 last_find_text_
;
55 // We don't own these, and they must exist at least as long as we do.
56 scoped_refptr
<ChromeFrameAutomationClient
> automation_client_
;
59 #endif // CHROME_FRAME_FIND_DIALOG_H_