⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dialogmodalless.cpp

📁 《Visual C++ 6.0实例教程》配套代码
💻 CPP
字号:
// DialogModalless.cpp : implementation file
//

#include "stdafx.h"
#include "Dialog.h"
#include "DialogModalless.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDialogModalless dialog


CDialogModalless::CDialogModalless(CWnd* pParent /*=NULL*/)
	: CDialog(CDialogModalless::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDialogModalless)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CDialogModalless::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDialogModalless)
	DDX_Control(pDX, IDC_LIST, m_List);
	DDX_Control(pDX, IDC_TREE, m_Tree);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDialogModalless, CDialog)
	//{{AFX_MSG_MAP(CDialogModalless)
	ON_BN_CLICKED(ID_OK, OnOk)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE, OnSelchangedTree)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDialogModalless message handlers

BOOL CDialogModalless::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	
	//往List控件中插入一列
	m_List.InsertColumn(0,"文件名",LVCFMT_LEFT,150,-1);

	TV_INSERTSTRUCT		TreeItem;
	HTREEITEM			hTreeItem;
	
	TreeItem.hInsertAfter = TVI_LAST;
	TreeItem.item.mask = TVIF_TEXT|TVIF_PARAM;

	//第一级
	CString      str = "D:\\";
	TreeItem.hParent = TVI_ROOT;//父级为根部
	TreeItem.item.pszText = str.GetBuffer(50);//设置字符缓冲区的大小并赋值
	TreeItem.item.lParam = 1;//对于根目录,设置为1
	hTreeItem = m_Tree.InsertItem(&TreeItem);//插入Tree控件中

	int          number = 0;//计算文件的个数
	CFileFind    file;
	BOOL	     bfind;
	CString      temp;

	//第二级
	TreeItem.hParent = hTreeItem;
	TreeItem.item.lParam = 10;//对于根目录,设置为10

	bfind = file.FindFile("D:\\*.*");//查找C:盘根目录下的所有文件和目录
	while(bfind)//如果找到
	{
		bfind = file.FindNextFile();//查找下一个
		if(file.IsDirectory())//判断是否为目录
		{
			//得到目录名并拷贝字符串
			strcpy(TreeItem.item.pszText,file.GetFileName());
			hTreeItem = m_Tree.InsertItem(&TreeItem);//插入Tree控件
		}
		else
		{
			//如不是目录,插入List控件
			str = file.GetFileName();//得到文件名
			m_List.InsertItem(number,str);//把文件名插入第number行
			number++;
		}
	}

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDialogModalless::OnOk() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnCancel();//退出非模态对话框
}

void CDialogModalless::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	CString temp,str;

	//获取当前被选择的tree view项
	HTREEITEM CurItem = m_Tree.GetSelectedItem();
	TV_ITEM TreeItem;
	TreeItem.hItem = CurItem;
	m_Tree.GetItem(&TreeItem);//获取指定tree view项的属性
	//获得当前选中项的文本
	temp = m_Tree.GetItemText(m_Tree.GetSelectedItem());

	long CurlParam = TreeItem.lParam;//当前条目的序号
	if(CurlParam != 1)//如果是子目录
	{
		//获取当前被选择项的父项
		TreeItem.hItem = m_Tree.GetParentItem(m_Tree.GetSelectedItem());
		m_Tree.GetItem(&TreeItem);
		CurItem = TreeItem.hItem;
		//获得当前选中项的文本
		str = m_Tree.GetItemText(CurItem);

		str += temp;
		str += "\\";
	}
	else
		str = temp;

	m_List.DeleteAllItems();//删除控件中的所有项

	CFileFind	file;
	BOOL		bFind;
	int			number = 0;

	str += "*.*";
	bFind = file.FindFile(str);//在str目录下查找
	while(bFind)//如果找到
	{
		bFind = file.FindNextFile();
		if(!file.IsDirectory())//判断是否为目录
		{
			//如不是目录,插入List控件
			temp = file.GetFileName();//得到文件名
			m_List.InsertItem(number,temp);//把文件名插入第number行
			number++;
		}
	}

	UpdateData(false);//更新控件中的值

	*pResult = 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -