当前位置: 首页 > 图文教程 > 开发语言 > VC++ > Windows资源管理器Web视图界面

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 Windows资源管理器Web视图界面


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 103 ::
收藏到网摘: n/a

Windows资源管理器Web视图界面



作者/祝晓斌


下载源代码

   
当我们使用Windows资源管理器(Exporlor)时,看到左边的视图能够显示所选目标的相关信息,比较好用。
本例是一个简单的Web视图界面示例,不过左边不是一个Web视图,而是一个FormView。界面如下图所示:


图一 程序运行画面

本例是最简单的SDI工程,在View中创建了两个View:

int CXindowView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; /* 创建左右两个视图 */ m_pForm = (CXindowForm *) okCreateView(RUNTIME_CLASS(CXindowForm), 1001); m_pList = (CXindowList *) okCreateView(RUNTIME_CLASS(CXindowList), 1002); m_pForm->m_pParent = this; return 0;} 
当窗口宽度<400时,会隐藏左边的CXindowForm视图:
void CXindowView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); int nFormWidth = 200; /* 如果窗口宽度<400, 就隐藏左视图 */ if(cx>400) { if(m_pForm->GetSafeHwnd()) m_pForm->ShowWindow(SW_SHOW); if(m_pForm->GetSafeHwnd()) m_pForm->MoveWindow(0,0,nFormWidth,cy); if(m_pList->GetSafeHwnd()) m_pList->ShowWindow(SW_SHOW); if(m_pList->GetSafeHwnd()) m_pList->MoveWindow(nFormWidth,0,cx-nFormWidth,cy); } else { if(m_pForm->GetSafeHwnd()) m_pForm->ShowWindow(SW_HIDE); if(m_pList->GetSafeHwnd()) m_pList->ShowWindow(SW_SHOW); if(m_pList->GetSafeHwnd()) m_pList->MoveWindow(0,0,cx,cy); }}
其中左边的的CXindowForm视图中有个CXLabel控件“增加”,点击会产生WM_NOFITY消息,这样就能够响应了。
void CXindowForm::OnInitialUpdate() { CFormView::OnInitialUpdate(); /* 相当于CListCtrl::SetItemData(), 用于区别是哪个CXLabel */ m_add.SetCommand(1);}BOOL CXindowForm::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { LPNMHDR pnmh = (LPNMHDR) lParam; if(pnmh->code==NM_LINKCLICK) { CXLabel* pLabel = (CXLabel *)GetDlgItem(pnmh->idFrom); CString str; /* GetCommand() */ str.Format("d",pLabel->GetCommand()); AfxMessageBox(str); if(m_pParent->GetSafeHwnd()) { CListCtrl& listCtrl = ((CXindowView*)m_pParent)->m_pList->GetListCtrl(); int nCount = listCtrl.GetItemCount(); int nItem = listCtrl.InsertItem(nCount, "2003-8-15"); listCtrl.SetItemText(nItem, 1, "192.168.3.1"); listCtrl.SetItemText(nItem, 2, "www.vckbase.com"); listCtrl.SetItemText(nItem, 3, "编程"); } } return CFormView::OnNotify(wParam, lParam, pResult);} 
注:CXLabel控件来自CLabel类,增加了几个有效函数。