我的vc++问题集2

 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);

你可能感兴趣的:(list,tree,Class,mfc,dialog,vc++)