如何自画CheckListBox? windows mobile下是不是不支持CCheckListBox呢
怎么自画CheckListBox? windows mobile上是不是不支持CCheckListBox呢?
windows mobile上是不是不支持CCheckListBox呢?如果不行,怎么自画CheckListBox?
它里面afxwin.h里这样定义:
而mobile上的值是_WIN32_WCE=$(CEVER)
------解决方案--------------------
按你上面的说法,应该是不支持。
你可以用ListCtrl的Report形式来代替ListBox。如果要自绘ListBox,可以给控件设置LBS_OWNERDRAWFIXED风格,响应 WM_MEASUREITEM和WM_DRAWITEM消息,用DrawIcon、DrawText等函数来绘制。
------解决方案--------------------
CComboBox和CListBox,这两种控件的自绘方法基本一样。参考这里的CheckComboBox:
http://www.codeproject.com/KB/combobox/checkcombo.aspx
------解决方案--------------------
CCheckListBox 类有源代码(MFC 目录下),LZ 可以参考一下。
------解决方案--------------------
windows mobile上是不是不支持CCheckListBox呢?如果不行,怎么自画CheckListBox?
它里面afxwin.h里这样定义:
- C/C++ code
#ifndef _WIN32_WCE // Controls class CCheckListBox : public CListBox { DECLARE_DYNAMIC(CCheckListBox) // Constructors public: CCheckListBox(); virtual BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); // Attributes void SetCheckStyle(UINT nStyle); UINT GetCheckStyle(); void SetCheck(int nIndex, int nCheck); int GetCheck(int nIndex); void Enable(int nIndex, BOOL bEnabled = TRUE); BOOL IsEnabled(int nIndex); virtual CRect OnGetCheckPosition(CRect rectItem, CRect rectCheckBox); // Overridables (must override draw, measure and compare for owner draw) virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct); // Implementation protected: void PreDrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); void PreMeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct); int PreCompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct); void PreDeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct); bool PreDrawItemThemed(CDC* pDC, DRAWITEMSTRUCT &drawItem, int nCheck, int cyItem); void PreDrawItemNonThemed(CDC* pDC, DRAWITEMSTRUCT &drawItem, int nCheck, int cyItem); void PreDrawItemHelper(LPDRAWITEMSTRUCT lpDrawItemStruct); virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*); void SetSelectionCheck( int nCheck ); // Active Accessibility virtual HRESULT get_accRole(VARIANT varChild, VARIANT *pvarRole); virtual HRESULT get_accState(VARIANT varChild, VARIANT *pvarState); virtual HRESULT get_accDefaultAction(VARIANT varChild, BSTR *pszDefaultAction); virtual HRESULT accDoDefaultAction(VARIANT varChild); #ifdef _DEBUG virtual void PreSubclassWindow(); #endif int CalcMinimumItemHeight(); void InvalidateCheck(int nIndex); void InvalidateItem(int nIndex); int CheckFromPoint(CPoint point, BOOL& bInCheck); int m_cyText; UINT m_nStyle; // Message map functions protected: //{{AFX_MSG(CCheckListBox) afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnLBAddString(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnLBFindString(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnLBFindStringExact(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnLBGetItemData(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnLBGetText(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnLBInsertString(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnLBSelectString(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnLBSetItemData(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnLBSetItemHeight(WPARAM wParam, LPARAM lParam); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; #endif // !_WIN32_WCE
而mobile上的值是_WIN32_WCE=$(CEVER)
------解决方案--------------------
按你上面的说法,应该是不支持。
你可以用ListCtrl的Report形式来代替ListBox。如果要自绘ListBox,可以给控件设置LBS_OWNERDRAWFIXED风格,响应 WM_MEASUREITEM和WM_DRAWITEM消息,用DrawIcon、DrawText等函数来绘制。
------解决方案--------------------
CComboBox和CListBox,这两种控件的自绘方法基本一样。参考这里的CheckComboBox:
http://www.codeproject.com/KB/combobox/checkcombo.aspx
------解决方案--------------------
CCheckListBox 类有源代码(MFC 目录下),LZ 可以参考一下。
------解决方案--------------------