|
|
//
// wpopup.h
//
#ifndef WPOPUP_H
#define WPOPUP_H
#include "private.h"
#include "mscandui.h"
#include "cuilib.h"
#include "cuicand.h"
#include "cuicand2.h"
#include "candmgr.h"
#include "candprop.h"
class CCandidateUI; class CCandWindow;
//
// CCommentListItem
// = comment list item object =
//
class CCommentListItem : public CListItemBase { public: CCommentListItem( int iCandItem, CCandidateItem *pCandItem ) { Assert( pCandItem != NULL );
m_iCandItem = iCandItem; m_pCandItem = pCandItem; m_nHeight = 0; }
virtual ~CCommentListItem( void ) { }
int GetICandItem( void ) { return m_iCandItem; }
CCandidateItem *GetCandidateItem( void ) { return m_pCandItem; }
void SetHeight( int nHeight ) { m_nHeight = nHeight; }
int GetHeight( void ) { return m_nHeight; }
protected: int m_iCandItem; CCandidateItem *m_pCandItem; int m_nHeight; };
//
// CUIFCommentList
// = popup comment list obeject =
//
class CUIFCommentList : public CUIFListBase { public: CUIFCommentList( CUIFObject *pParent, DWORD dwID, const RECT *prc, DWORD dwStyle ); virtual ~CUIFCommentList( void );
void AddCommentItem( CCommentListItem *pListItem ); CCommentListItem *GetCommentItem( int iListItem );
virtual void SetRect( const RECT *prc ); void InitItemHeight( void ); int GetTotalHeight( void ); int GetMinimumWidth( void );
void SetTitleFont( HFONT hFont ); void SetTextFont( HFONT hFont );
protected: int m_cyTitle; int m_cyTitleMargin; int m_cxCommentMargin; int m_cyCommentMargin; HFONT m_hFontTitle; HFONT m_hFontText;
//
// CUIFListBase methods
//
virtual int GetItemHeight( int iItem ); virtual void PaintItemProc( HDC hDC, RECT *prc, CListItemBase *pItem, BOOL fSelected );
int PaintCommentProc( HDC hDC, const RECT *prc, LPCWSTR pwch, BOOL fCalcOnly ); int CalcMinimumWidth( void ); void CalcTitleHeight( void ); void CalcItemHeight( void ); void CalcItemHeightProc( HDC hDC, CCommentListItem *pListItem ); };
//
// CPopupCommentWindow
// = candidate window base class =
//
class CPopupCommentWindow : public CUIFWindow, public CCandListEventSink, public CCandUIPropertyEventSink { public: CPopupCommentWindow( CCandWindow *pCandWnd, CCandidateUI *pCandUI ); virtual ~CPopupCommentWindow( void );
//
// CUIFWindow methods
//
virtual LPCTSTR GetClassName( void ); virtual LPCTSTR GetWndTitle( void ); virtual CUIFObject *Initialize( void ); virtual void Move( int x, int y, int nWidth, int nHeight ); virtual LRESULT OnWindowPosChanged( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); virtual LRESULT OnObjectNotify( CUIFObject *pUIObj, DWORD dwCommand, LPARAM lParam ); virtual void OnCreate( HWND hWnd ); virtual void OnNCDestroy( HWND hWnd );
//
// CCandListEventSink methods
//
virtual void OnSetCandidateList( void ); virtual void OnClearCandidateList( void ); virtual void OnCandItemUpdate( void ); virtual void OnSelectionChanged( void );
//
// CCandUIPropertyEventSink methods
//
virtual void OnPropertyUpdated( CANDUIPROPERTY prop, CANDUIPROPERTYEVENT event );
void DestroyWnd( void ); void LayoutWindow( BOOL fResize = FALSE ); int LayoutWindowProc( RECT *prcWnd ); void OnCandWindowMove( BOOL fResetAnyway );
protected: CCandidateUI *m_pCandUI; CCandWindow *m_pCandWnd; CUIFWndFrame *m_pWndFrame; CUIFWndCaption *m_pCaption; CUIFCaptionButton *m_pCloseBtn; CUIFCommentList *m_pCommentList; HICON m_hIconClose; BOOL m_fUserMoved;
void SetCommentListProc( void ); void ClearCommentListProc( void ); int CandItemFromListItem( int iListItem ); void CalcPos( POINT *ppt, int nWidth, int nHeight ); };
#endif // WPOPUP_H
|