11.MFC中关于CListCtrl的解释
A window that displays a collection of items each consisting of
an icon and a label.
12.在单文档中如何实现分割视图窗口:
1)修改App中的InitInstance()函数,把
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CTreeNaviDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
// RUNTIME_CLASS(CTreeNaviView) 把这句屏蔽,改为NULL
NULL);
2)在Frame类中OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)中增加
split.CreateStatic(this,1,2);
split.CreateView(0,0,RUNTIME_CLASS(TreeView),CSize(100,100),pContext);
split.CreateView(0,1,RUNTIME_CLASS(CTreeNaviView),CSize(100,100),pContext);
return CFrameWnd::OnCreateClient(lpcs, pContext);
注: CSplitterWnd split;是在Frame定义的变量.
接下来的操作根据用户进行.
13.关于树状控件的使用:
先看函数TreeView::OnInitialUpdate()中的内容
list.Create(32,32,ILC_COLOR32|ILC_MASK,0,0);
list.Add(::AfxGetApp()->LoadIcon(IDI_ICON1));
list.Add(::AfxGetApp()->LoadIcon(IDI_ICON2));
list.Add(::AfxGetApp()->LoadIcon(IDI_ICON3));
this->GetTreeCtrl().SetImageList(&list,TVSIL_NORMAL);
HTREEITEM tree;
tree=this->GetTreeCtrl().InsertItem("导航1",0,1);
this->GetTreeCtrl().InsertItem("子导航1",2,2,tree);
this->GetTreeCtrl().InsertItem("子导航2",3,3,tree);
this->GetTreeCtrl().InsertItem("子导航3",4,4,tree);
注:CImageList list;是类中定义的变量。
14.关于OnEraseBkgnd(CDC *pDC)函数
这函数主要是实现擦除背景颜色的功能,通过MFC不能添加此函数,必须手动添加。
15.把COLORREF转换为相应的颜色值可调用GetRValue(..),GetGValue(..),GetBValue(..)函数。
16.CWnd::SetWindowRgn的作用Call this member function to set a window's region.
例如在对话框类中的OnInitDialog()函数中增加如下代码:
CRgn wndRgn,rgnTemp;
wndRgn.CreateEllipticRgn(0,0,480,300);
SetWindowRgn((HRGN)wndRgn,true);
就会发现窗口的区域变成了椭圆形了。
17.绘制窗体的标题栏和边框时不能使用GetDC方法获得设备上下文指针,因为GetDC方法获得的是窗体
客户区域的设备上下文指针。应使用GetWindowDC方法获得窗口设备上下文指针。
18.如何判断鼠标不在活动的区域内移动?
在相应的类中添加WM_NCMOUSEMOVE消息的相应函数即可。
19.如何增加工具栏:
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar/n");
return -1; // fail to create
}
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
m_DockBar.Create(this,&m_ToolDlg,IDD_TOOLS_DIALOG);
m_DockBar.SetBarStyle(m_DockBar.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC);
m_DockBar.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_DockBar);
以上代码显示了增加工具栏的过程.
20.获取鼠标当前位置:
CPoint pt;
GetCursorPos(&pt);