//NONPORTABLE #ifndef _EDITWND_H #define _EDITWND_H #include #include #include #include #define EDITWND_PARENT GuiObjectWnd class EditWnd : public EDITWND_PARENT { public: EditWnd(wchar_t *buffer=NULL, int buflen=0); virtual ~EditWnd(); virtual int onInit(); virtual int onPaint(Canvas *canvas); virtual int onResize(); #ifdef WIN32 virtual LRESULT wndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); #endif // mig: Made these virtual to allow to be accessed by // EditWndString object in editwndstring.h virtual void setBuffer(wchar_t *buffer, int len); virtual void getBuffer(wchar_t *outbuf, int len); virtual const wchar_t *getBufferPtr() { return outbuf; } virtual int getBufferLength() { return maxlen; } virtual void setBackgroundColor(ARGB32 c); virtual void setTextColor(ARGB32 c); void setModal(int modal); //if modal, deletes self on enter void setAutoEnter(int a); //fake an onEnter event when lose focus int getAutoEnter() { return autoenter; } void setAutoSelect(int a); //true==grab the focus on init void setIdleTimerLen(int ms); // how many ms keys are idle before send msg virtual void onSetVisible(int show); virtual int onGetFocus(); virtual int wantFocus(); virtual void setWantFocus(int w) { wantfocus = w; } virtual void selectAll(); virtual void enter(); virtual void setIdleEnabled(int i) { idleenabled = i; } virtual int getIdleEnabled() { return idleenabled; } void setBorder(int border); int getTextLength(); HWND getEditWnd(); virtual int handleRatio() { return 0; } virtual int getAutoSelect() { return autoselect; } void setMultiline(int ml); void setReadOnly(int ro); void setPassword(int pw); void setAutoHScroll(int hs); void setAutoVScroll(int vs); void setVScroll(int vs); int isEditorKey(int vk); virtual void invalidate(); virtual int gotFocus(); // the wndproc for the edit box virtual LRESULT editWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); protected: virtual void timerCallback(int id); // call down on these if you override them virtual void onEditUpdate(); virtual void onIdleEditUpdate(); virtual int onEnter(); // user hit enter.. return 1 to close window virtual int onAbort(); // user hit escape.. return 1 to close window virtual int onLoseFocus(); // different from onKillFocus() from BaseWnd! void setStyle(LONG style, int set); #ifdef LINUX virtual int onLeftButtonDown( int x, int y ); virtual int onLeftButtonUp( int x, int y ); virtual int onMouseMove( int x, int y ); virtual int onKeyDown(int key); #endif private: #ifdef LINUX int textposFromCoord( int x, int y ); #endif HWND editWnd; WNDPROC prevWndProc; int maxlen; int retcode; int idletimelen; int modal; int bordered; int autoenter; int beforefirstresize; int autoselect; int multiline; int readonly; int password; int idleenabled; int autohscroll,autovscroll,vscroll; int nextenterfaked; SkinColor backgroundcolor, textcolor, selectioncolor; #ifdef LINUX int selstart, selend; int cursorpos; int selectmode; int viewstart; #endif #ifdef WIN32 HBRUSH oldbrush; #endif // Basically, we're redoing the functionality of EditWndString // (the bigger version), so we'll probably erase EditWndString // completely as an object. MemBlock buffer8; wchar_t *outbuf; int wantfocus; #ifdef LINUX StringW inbuf; #endif }; #define EDITWND_RETURN_NOTHING 0 // user didn't do nothing #define EDITWND_RETURN_OK 1 // user hit return #define EDITWND_RETURN_CANCEL 2 // user hit escape or something #endif