MFC 界面编程 UI美化总结


第一部分 窗口 窗口类 
1,窗口句柄 窗口的管理类
2,窗口的创建函数CreateWindow() CreateWindowEx()
3, Window Classes 每个窗口的特征类
HOTKEY_CLASS
PROGRESS_CLASS
WC_HEADER
WC_LISTVIEW
4,Window Styles 窗口的显示风格
Common Control Styles
5,Notifications 控件和父窗口的通知
WM_NOTIFY 消息名称
HWND hwndFrom: 消息发送的目的窗口句柄号.
UINT idFrom: 发送该消息的控件ID号码.
UINT code: 需要相应的消息号. (NM_XXX)NM_CLICK NM_DBLCLK






第二部分 控件及控件的分类
Part 1: The basics
Part 2: Status bars and toolbars
Part 3: Trackbars, progress bars, and up-down controls
Part 4: Header windows and list view windows
Part 5: Image lists and tree view windows
Part 6: Tab controls and property sheets 


第三部分 列表控件CListCtrl
实例对象 CListCtrl m_listctrl;
//设置显示风格
m_listctrl.SetExtendedStyle( m_listctrl.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT );
//设置列表的背景颜色 字体颜色 字体背景颜色
方法一发送消息:
::SendMessage(m_listctrl.m_hWnd, LVM_SETBKCOLOR, (WPARAM)0, (LPARAM)RGB(100,255,200));
方法二ListView_XXX宏:

ListView_SetBkColor(m_listctrl.m_hWnd, RGB(210,255,0));
ListView_SetTextColor(m_listctrl.m_hWnd, RGB(255,0,0));
ListView_SetTextBkColor(m_listctrl.m_hWnd, RGB(132,223,232));


第四部分 界面美化的方法:
1.使用MFC类的既有函数
CWinApp::SetDialogBkColor
指定对话框的背景色和文本颜色
CListCtrl::SetBkColor
CReBarCtrl::SetBkColor
CStatusBarCtrl::SetBkColor
CTreeCtrl::SetBkColor
COLORREF SetBkColor( COLORREF clr );
设定背景色。
CListCtrl::SetTextColor
CReBarCtrl::SetTextColor
CTreeCtrl::SetTextColor
COLORREF SetTextColor( COLORREF clr );
设定文本颜色。
CListCtrl::SetBkImage()
设定列表控件的背景图片。
BOOL SetBkImage( LVBKIMAGE* plvbkImage );
BOOL SetBkImage( HBITMAP hbm, BOOL fTile = TRUE, int xOffsetPercent = 0, int yOffsetPercent = 0);
BOOL SetBkImage( LPTSTR pszUrl, BOOL fTile = TRUE, int xOffsetPercent = 0, int yOffsetPercent = 0 );
CComboBoxEx::SetExtendedStyle
CListCtrl::SetExtendedStyle
CTabCtrl::SetExtendedStyle
CToolBarCtrl::SetExtendedStyle
DWORD SetExtendedStyle( DWORD dwExMask, DWORD dwExStyles );
设置控件的扩展属性,例如:设置列表控件属性带有表格线。




2.使用Windows的消息机制
WM_PAINT
WM_ERASEBKGND
通知该窗口擦除背景 [主要用于重画一个窗口的背景]
WM_CTLCOLOR*
修改元素的颜色 [主要用于修改基础控件的文本颜色|背景颜色|文本字体]
WM_DRAWITEM*
修改元素的界面框架 [主要用于修改基础控件的边框][控件需要拥有Owner draw风格][按钮控件|组合框控件|列表框控件|菜单项|列表视图|Tab控件|静态文本控件]
WM_MEASUREITEM*
对于一些特殊的控件 [设置ListBox中每个项目的高度][控件需要拥有Owner draw风格][组合框控件|


列表框控件|菜单项]
NM_CUSTOMDRAW*

标注*的消息是子元素发送给父窗口的通知消息,其它的为窗口或者子元素自身的消息。
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd( CDC* pDC );
afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor );
afx_msg void OnDrawItem( int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct );
afx_msg void OnMeasureItem( int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct );
afx_msg void OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult);


3.子类化
CButton::DrawItem
CCheckListBox::DrawItem
CComboBox::DrawItem
CHeaderCtrl::DrawItem
CListBox::DrawItem
CMenu::DrawItem
CStatusBar::DrawItem
CStatusBarCtrl::DrawItem
CTabCtrl::DrawItem
virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
Owner draw元素自绘函数


第五部分 GDI操作常用类
CPoint
CRect
CSize
CString
CTime
CTimeSpan


CDC
CClientDC
CMetalFileDC
CPaintDC
CWindowDC


CBitmap
CBrush
CFont
CPalette
CPen
CRgn


CImageList


Arrays
Lists
Maps

你可能感兴趣的:(编程,UI,ListView,mfc,styles,notifications)