#pragma once
#include "afxwin.h"
#include "resource.h"
#include "apl_gui.h"

// CaplFindInCtrlDlg dialog

// Диалог для поиска в контроле
// Порядок использования:


class CaplFindInCtrlDlg : public CaplTranslateDialog
{
	DECLARE_DYNAMIC(CaplFindInCtrlDlg)

public:
	CaplFindInCtrlDlg(CWnd* pParent = NULL);   // standard constructor
	virtual ~CaplFindInCtrlDlg();

	void Show(CWnd *wnd4find); // Окно может быть - treeliscCtrl или Listctrl
	void Hide(); // Скрывает окно, если оно есть
	static void Install (CWnd *wnd4find); // Устанавливает обработчик для отображения по Ctrl+F
	static void DeInstall (CWnd *wnd4find);  // Убирает обработчик для отображения по Ctrl+F

	CWnd *m_wnd4Find;
	void FindNextItem(int delta);  // +1 -next, -1 - prev, 0 - с начала
	static void FindNextTreeItem(CTreeCtrl *list, LPCTSTR text, int delta);
	static void FindNextTreeListItem(CaplTreeListCtrl *treelist, LPCTSTR text, int delta);
	static void FindNextListItem(CListCtrl *list, LPCTSTR text, int delta);

	static LRESULT UniversalKeyProc(WNDPROC proc,HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
	static LRESULT EditKeyProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
	static LRESULT btnFindFirstKeyProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
	static LRESULT btnFindNextKeyProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
	static LRESULT btnFindPrevKeyProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

	static WNDPROC st_DefEditProc; // Исходим из ттго, что экземпляр каласса всегда будет только один
	static WNDPROC st_DefProcbtnFindFirst; 
	static WNDPROC st_DefProcbtnFindNext; 
	static WNDPROC st_DefProcbtnFindPrev; 

// Dialog Data
	enum { IDD = IDD_FIND_IN_CTRL };

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	CToolTipCtrl m_toolTip;

	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedFindFirst();
	afx_msg void OnBnClickedFindNext();
	afx_msg void OnBnClickedFindPrev();
	CEdit m_text_ctrl;
	CaplButton m_btnFindFirst;
	CaplButton m_btnFindNext;
	CaplButton m_btnFindPrev;
	afx_msg void OnClose();
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	virtual BOOL OnInitDialog();
};
