100916 中软实训 之 TreeCtrl

 

100916 中软实训

感觉今天也没有做什么。我就把那个卷烟零售系统的管理界面设计了一下。

今天,我们比昨天进步了。从配合上来说,分工更明确了。我做系统管理界面,小辉做销售前台界面,强强做打印功能,小强做数据库设计,子子做网络传输数据通信功能。

今天明白了在我之前定义的那个全局变量中,是不能够像数组定义一样,直接一步初始化的。如下为错误的方法:

G_pValue->department[20] = {"销售查询分析", "供应商管理", "商品信息",

"商品调价", "库存盘点", "盘点查询", "入库管理",

"销售报表", "进货报表", "库存报表" ,"用户信息管理", "角色管理", "退出"};

老师说,这是因为没有这种重载的方法。今天,学习了那个TreeCtrl控件的使用方法。

     真菜,竟然把那个TreeCtrl控件加上去了,却没有给它定义变量,结果运行出错。调试也不太会,只会按F10,按一下F11也是一种在F10无效的时候,可以试试。

// CLeftView 消息处理程序

void CLeftView::InitTreeCtrl()

{

     m_treeSearch.SetBkColor(RGB(222,232,240));

     m_ImageList.Create(25,25,ILC_COLOR8 | ILC_MASK, 2, 2);

     m_ImageList.SetBkColor(::GetSysColor(COLOR_BTNFACE));

 

 

     m_treeSearch.SetImageList(&m_ImageList,TVSIL_NORMAL);

     m_treeSearch.ModifyStyle(0L,TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS); 

     m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));

     m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));

     m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));

 

     CString st[13]={"销售查询分析", "供应商管理", "商品信息",

         "商品调价", "库存盘点", "盘点查询", "入库管理",

         "销售报表", "进货报表", "库存报表" ,"用户信息管理", "角色管理", "退出"};

 

     CGlobalValue* g_pValue = CGlobalValue::GetInstance();

//   g_pValue->Departments department[14];

     for (int i=0; i<13; i++)

     {

//       g_pValue->Departments[i].department = str[i];

         //这里又遇到问题了,不知道怎么在类中定义这个结构体全局变量。

     }

     HTREEITEM item;

     m_treeSearch.DeleteAllItems();

     //销售管理

     item = m_treeSearch.InsertItem(_T("销售管理"),0,0,TVI_ROOT);

     m_treeSearch.InsertItem(_T("销售查询分析"),1,2,item);

     m_treeSearch.InsertItem(_T("供应商管理"),1,2,item);

 

     //商品信息管理

     item = m_treeSearch.InsertItem(_T("商品信息管理"),0,0,TVI_ROOT);

     m_treeSearch.InsertItem(_T("商品信息"),1,2,item);

     m_treeSearch.InsertItem(_T("商品调价"),1,2,item);

 

     //仓库管理

     item=m_treeSearch.InsertItem(_T("仓库管理"),0,0,TVI_ROOT);

     m_treeSearch.InsertItem(_T("库存盘点"),1,2,item);

     m_treeSearch.InsertItem(_T("盘点查询"),1,2,item);

     m_treeSearch.InsertItem(_T("入库管理"),1,2,item);

 

     //进存销报表

     item = m_treeSearch.InsertItem(_T("进存销报表"),0,0,TVI_ROOT);

     m_treeSearch.InsertItem(_T("销售报表"),1,2,item);

     m_treeSearch.InsertItem(_T("进货报表"),1,2,item);

     m_treeSearch.InsertItem(_T("库存报表"),1,2,item);

 

     //人事信息管理

     item = m_treeSearch.InsertItem(_T("人事信息管理"),0,0,TVI_ROOT);

     m_treeSearch.InsertItem(_T("用户信息管理"),1,2,item);

     m_treeSearch.InsertItem(_T("角色管理"),1,2,item);

 

     //系统

     item = m_treeSearch.InsertItem(_T("系统") ,0 ,0 ,TVI_ROOT);

     m_treeSearch.InsertItem(_T("退出") ,1 ,2 ,item);

 

 

     //设置OutlookView的布局

     this->MoveWindow(0 ,0 ,270, 605 ,TRUE);

     m_treeSearch.SetWindowPos(NULL ,0 ,0 ,270, 605 ,SWP_SHOWWINDOW);

}

void CLeftView::OnInitialUpdate()

{

     CFormView::OnInitialUpdate();

 

     // TODO: 在此添加专用代码和/或调用基类

    

     InitTreeCtrl();

}

 

 

 

void CLeftView::OnNMClickTreeadmin(NMHDR *pNMHDR, LRESULT *pResult)

{

     // TODO: 在此添加控件通知处理程序代码

     HTREEITEM hTreeItem = m_treeSearch.GetSelectedItem();

     CString str = m_treeSearch.GetItemText(hTreeItem);

    

     *pResult = 0;

}

 

 

还有给TreeCtrl增加数据结构的方法,这是一个小技巧。

/*

HTREEITEM hRoot, hCur;          //树形控件项目句柄

TV_INSERTSTRUCT TCItem;         //插入数据项数据结构

TCItem.hParent = TVI_ROOT;      //增加根项

TCItem.hInsertAfter = TVI_LAST; //在最后项之后

TCItem.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;

//设屏蔽

TCItem.item.pszText = "数据选择";

TCItem.item.lParam = 0;          //序号

TCItem.item.iImage = 0;          //正常图标

TCItem.item.iSelectedImage = 1; //选中时的图标

 

hRoot = m_treeSearch.InsertItem(&TCItem);

char *strRoot[6] = {"销售管理", "商品信息管理", "仓库管理", "进存销报表", "人事信息管理", "系统"};

char *

for (int i=0; i<5; i++)

{

TCItem.hParent = hRoot;

//       TCItem.item.pszText=

}

*/

下面这两个函数的用法值得积累一下。WsprintfMessageBox

/*  

//   LONG IDs = m_treeSearch.GetItemData(hTreeItem);

char temp[100];

wsprintf(temp, "%s", s1);//

MessageBox(temp, "选择信息");

*/

做软件还是要多动脑筋呀。那个子子,真的挺会动脑筋的,他一看到我那个对话框中有一个颜色范围显示窄了,他就说,你知道哪个函数是调宽度的吗?我一想,恩,还真有道理。一查一改,就对了。真强,我还没有这种找错的想法。我当时只想到去一个函数一个函数地查。。。。还想问老师。后来,子子来了,就问他了。他一下子就把那个登录框弹出,点击登录后进入侵害界面的对话框做出来了。解决了小辉一直埋怨苦恼的问题。还真行。

 

你可能感兴趣的:(中软实训之C++方向)