00001 #ifndef AUTOCOMPLETE_H
00002 #define AUTOCOMPLETE_H
00003
00004 #include <abuse/abuse.h>
00005 #include <string>
00006 #include <map>
00007 #include <list>
00008 #include "StringList.h"
00009
00010 class AutoComplete
00011 {
00012 public:
00013 AutoComplete(HWND hWnd,StringList* sl);
00014 ~AutoComplete();
00015 std::string getText()const;
00016
00017 private:
00018 static LRESULT CALLBACK _parentProc(HWND hWnd,UINT uMsg,WPARAM wP,LPARAM lP);
00019 static LRESULT CALLBACK _textProc(HWND,UINT,WPARAM,LPARAM);
00020 static LRESULT CALLBACK _listProc(HWND,UINT,WPARAM,LPARAM);
00021 LRESULT parentProc(UINT uMsg,WPARAM wP,LPARAM lP);
00022 LRESULT textProc(UINT uMsg,WPARAM wP,LPARAM lP);
00023 LRESULT listProc(UINT uMsg,WPARAM wP,LPARAM lP);
00024 HWND m_hText;
00025 HWND m_hList;
00026 HWND m_hParent;
00027
00028 WNDPROC m_hListWP;
00029 WNDPROC m_hTextWP;
00030 StringList* m_sl;
00031 typedef std::map<HWND,std::list<AutoComplete*> > HwndToClassList;
00032 static HwndToClassList hwndToClassList;
00033 typedef std::map<HWND,WNDPROC> OrigWndProc;
00034 static OrigWndProc origWndProc;
00035 };
00036
00037 #endif //AUTOCOMPLETE_H