首个MFC项目总结1

来源:互联网 发布:计算机流量监控软件 编辑:程序博客网 时间:2024/05/22 07:49

(1).对单文档进行页面切分:

        进行几次切分就 声明几个 CSplitterWnd 类型的变量(我在项目中切分两次,声明两个变量 m_splitwnd 、m_splitwnd)

       具体切分步骤:(在CMainFrame中实现)

                           m_splitwnd.CreateStatic(this,1,2);

                           m_splitwnd1.CreateStatic(&m_splitwnd,2,1,WS_CHILD|WS_VISIBLE, m_splitwnd.IdFromRowCol(0,1));

                           m_splitwnd.CreateView(0,0,RUNTIME_CLASS(C*View),CSize*(200,0),pContext);

                           m_splitwnd1.CreateView(0,0,RUNTIME_CLASS(C*View),CSize(0,200),pContext);

                           m_splitwnd1.CreateView(1,0,RUNTIME_CLASS(C*View),CSize(0,200),pContext);

       其中C*View可以是继承CView的子类。

 

(2).各种CView的子类:

       1.CMyTree类继承于CTreeView。

            所以CMyTree中本身就包含CTreeCtrl,  通过 CTreeCtrl  usetree = this->GetTreeCtrl();可得到。

       之后的操作等同于操作一个CTreeCtrl控件。

       2.CMyList类继承于CListView。 可同CMyTree类一样操作。

       3.CMyTabView类继承于   CFormView。

           继承于CFormView的类不像上面两个类,CFormView类是用于窗体视图的基类。一个窗体视图是包含控件的基本视图,这些控件以对话模板资源为基础被放置好。

       如果在应用中想使用窗体,则可用CFormView。这些视图使用CScrollView的功能,支持滚动。也可以在CFormView中插入其他控件。如我在其中插入了一个tabCtrl

       控件,再操作tabCtrl。

 

(3).各控件的操作:

       1.treeCtrl    (Mytree) ((CString)treestationName  节点名称)

           在Mytree节点钱添加“+”“—”及图标: (用一个CImageLIst   m_list存放图标ID)

                   获取App指针   CMyApp  *pApp = (CMyApp*)AfxGetApp();

                   设置CImagelist的格式      m_list.Create(16,16,ILC_COLOR32,2,2)

                   设置图标背景色    m_list.SetBkColor(RGB(255,255,255));

                   加入图标                m_list.Add(pApp->LoadIcon(IDI_ICON1));

                                                   m_list.Add(pApp->LoadIcon(IDI_ICON2));

                                                   m_list.Add(pApp->LoadIcon(IDI_ICON3));

                   把m_list运用到treeCtrl      MyTree.SetImageList(&m_lsit,TVSIL_NORMAL);

                  获取树控件的原风格           DWORD   dwStyles = GetWindowLong(Mytree.m_hWnd,GWL_STYLE);

                  重新设置风格                       dwStyles |= TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;

                                                                 SetWindowLong(Mytree.m_hWnd,GWL_STYLE,dwStyles);

           创树德根节点:  HTREEITEM   HROOT = Mytree.InsertItem("用户信息",1,1,TVI_ROOT);                   (第二个参数是节点没有被选中时显示 的图标,第三参数是被选中时显示的图标)

           插入树根节点:  HTREEITEM   HROOT = Mytree.GetRootItem(); 

           插入子节点: HTREEITEM  HCHLID = Mytree.InsertItem(treestationName,2,0,HROOT)

           判断树控件是否有子节点:    Mytree.ItemHasChildren(Mytree.GetRootItem());

           获取节点text的值      GetItemText((HTREEITEM)Item);

           得到下个子节点        HTREEITEM childItem = Usetree.GetNextSiblingItem(item);

           删除指定节点            Mytree.DeleteItem(Item);

 

       2.LIstCtrl:  (Mylist)

           listCtrl有四种类型  LVS_ICON、 LVS_REPORT、 LVS_SMALLICON、 LVS_LIST。

           首先为ListCtrl选择类型    Mylist.ModifyStyle(0,LVS_REPORT);

           设置其他属性可以和TreeCtrl一样,也可以如下:

                   LV_COLUMN   lvc;

                   lvc.mask  = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH |LVCF_ORDER;

                   lvc.fmt = LVCFMT_LEFT;

           创建列表头:各列名称char*  Colname[]  =  {"ID","NAME","密码"};

                                   各列宽度 int ColWidth[]  = {300,300,300};

           使listctrl生成各列:

                                   for(i=0;i<3;i++)

                                   {     lvc.pszText = Colname[i];

                                         lvc.iSubItem = i;

                                         lvc.iOrder = i;

                                         lvc.cx = ColWidth[i];

                                         Mylist.InsertColumn(i,&lvc);

                                   }

           插入一行  int nRow = Mylist.InsertItem(0,str) ;                  从首行插入,设置首列数据为str;

           设置各列数据  Mylist.SetItemText(nRow,1,name);             设置第二列数据为name

 

        3.TabCtrl      (m_tabctrl)

           添加切换标头:  m_tabctrl.InsertItem(0,"计费报表");

                                          m_tabctrl.InsertItem(1,"计费报表");

          可以在TabCtrl中插入Dialog:          (m_listdlg 、m_secondlistdlg)     都是Dialog类型的。

          把Dialog插入TabCtrl中:   m_listdlg.Create(IDD_LISTDIALOG,GetDlgItem(IDC_TAB1));

                                                          m_listdlg.Create(IDD_LISTDIALOG,GetDlgItem(IDC_TAB1));

          TabCtrl是根据标头的标记来更改切换:

                                          获取活动标头标记: int  CurSel = m_tabctrl.GetCurSel();

          根据标记来设置活动界面:  switch(CurSel){

                                                            case 0:  m_listdlg.ShowWindow(true);

                                                                              m_secondlistdlg.ShowWindow(false);

                                                            ……}

原创粉丝点击