本程序是我在VC知识库上看到的([ 本文属于第18期, 适合初级读者 ])
,仿OutLook的界面类CGfxOutBarCtrl,
这里是CGfxOutBarCtrl类成员函数:int CGfxOutBarCtrl::AddFolderBar(const char * pFolder, CWnd * pSon, const DWORD exData)
{
CBarFolder * pbf = new CBarFolder(pFolder, exData);
ASSERT(pbf);
pbf->pChild = pSon; arFolder.Add((void *)pbf); return arFolder.GetSize() - 1;
}
CGfxOutBarCtrl wndBar;在主框架类里面有以下代码: wndBar.AddFolder( _T("查看"), 0);
wndBar.AddFolderBar( _T("注册表"), &wndTree); //这里是一个TreeList
wndBar.AddFolderBar( _T("文件"), &m_wnd); //这里的m_wnd是我要添加的TreeView类成员
----------------------------------------------------------
实现添加三个像QQ一样可以拉动的页面:
查看,
注册表
文件
-------------
我新建一个工程,做成一个资源管理器的样子,想把它添加进去,我是这样做的:
1。把资源管理器那个类(CDriveBrowser)加进去,
2。在那个资源管理器那个类(CDriveBrowser)里添加:
friend class MainFrm;
3. 在MainFrm里声明
CDriveBrowser m_wnd;
4. wndBar.AddFolderBar( _T("文件"), &m_wnd); //这里的m_wnd是我要添加的TreeView类成员编译,错误如下:
static char THIS_FILE[] = __FILE__; 重定义
我就不知道怎么办了,一去掉,程序就会死
哪些高人指点一下
,仿OutLook的界面类CGfxOutBarCtrl,
这里是CGfxOutBarCtrl类成员函数:int CGfxOutBarCtrl::AddFolderBar(const char * pFolder, CWnd * pSon, const DWORD exData)
{
CBarFolder * pbf = new CBarFolder(pFolder, exData);
ASSERT(pbf);
pbf->pChild = pSon; arFolder.Add((void *)pbf); return arFolder.GetSize() - 1;
}
CGfxOutBarCtrl wndBar;在主框架类里面有以下代码: wndBar.AddFolder( _T("查看"), 0);
wndBar.AddFolderBar( _T("注册表"), &wndTree); //这里是一个TreeList
wndBar.AddFolderBar( _T("文件"), &m_wnd); //这里的m_wnd是我要添加的TreeView类成员
----------------------------------------------------------
实现添加三个像QQ一样可以拉动的页面:
查看,
注册表
文件
-------------
我新建一个工程,做成一个资源管理器的样子,想把它添加进去,我是这样做的:
1。把资源管理器那个类(CDriveBrowser)加进去,
2。在那个资源管理器那个类(CDriveBrowser)里添加:
friend class MainFrm;
3. 在MainFrm里声明
CDriveBrowser m_wnd;
4. wndBar.AddFolderBar( _T("文件"), &m_wnd); //这里的m_wnd是我要添加的TreeView类成员编译,错误如下:
static char THIS_FILE[] = __FILE__; 重定义
我就不知道怎么办了,一去掉,程序就会死
哪些高人指点一下
=====================================================BOOL CDriveBrowser::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Add your specialized code here and/or call the base class
cs.style |= TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES;
return CTreeView::PreCreateWindow(cs);
}void CDriveBrowser::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
CWinApp* pApp = AfxGetApp();
// ASSERT(m_pImageList != NULL); // serious allocation failure checking
m_pImageList.Create(16, 16, ILC_COLOR8 | ILC_MASK, 9, 9);
//加载图标
m_pImageList.Add(pApp->LoadIcon(ICO_CDDRV));
m_pImageList.Add(pApp->LoadIcon(ICO_CLSDFLD));
m_pImageList.Add(pApp->LoadIcon(ICO_DRIVE));
m_pImageList.Add(pApp->LoadIcon(ICO_FLOPPYDRV));
m_pImageList.Add(pApp->LoadIcon(ICO_MYCOMP));
m_pImageList.Add(pApp->LoadIcon(ICO_OPENFLD));
m_pImageList.Add(pApp->LoadIcon(ICO_TEXTFILE));
GetTreeCtrl().SetImageList( &m_pImageList , TVSIL_NORMAL);
HTREEITEM hParent = GetTreeCtrl().InsertItem(MYCOMPUTER, ILI_MYCOMP, ILI_MYCOMP);
InitTreeView(hParent);
GetTreeCtrl().Expand(hParent, TVE_EXPAND);
}
void CDriveBrowser::InitTreeView(HTREEITEM hParent)
{
int nPos = 0;
UINT nCount = 0;
CString strDrive = "?:\\";
DWORD dwDriveList = ::GetLogicalDrives ();
CString cTmp;
while (dwDriveList)
{
if (dwDriveList & 1)
{
cTmp = strDrive;
strDrive.SetAt (0, 0x41 + nPos);
if (AddDrives(strDrive , hParent))
{
nCount++;
}
}
dwDriveList >>= 1;
nPos++;
}
return;
}
http://lw.68ab.com/work/work.rar
是运行时出现异常?
-------------------------
问一下,你说vc编程序会死是怎么一回事啊?有时候我只改一个空格或者其它无关紧要的东西,程序一编译就会死,只能强制结束,重新打开,再编又没有问题,这是哪里出了问题啊????
m_wnd.Create(WS_CHILD|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS,
CRect(0,0,0,0), &wndBar, 1011);
最好把CTreeView改造成CTreeCtrl,你得程序已经改好,如需要可以发给你
我按你说的,我这样改:
class friend MainFrm;
然后在MainFrm类里加入:CDriveBrowser m_wnd;
在....
加入:
m_wnd.Create(WS_CHILD|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS,
CRect(0,0,0,0), &wndBar, 1011);wndBar.AddFolderBar( _T("文件"), &m_wnd); 不行,我不是很懂,请指点,我还在学习中。。另外.cn,谢谢~~
2. 其次创建
m_wnd.Create(WS_CHILD|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS,
CRect(0,0,0,0), &wndBar, 1011);主要是第一步做好就OK了.........