22打开文档ShellExcute

四个按钮:打开文本文件IDC_BTN_TXT 打开图片IDC_BTN_BMP 打开网址IDC_BTN_URL 打开电子邮件编辑器IDC_BTN_MAIL

为四个按钮添加事件响应函数:

void CShellOpenDlg::OnBnClickedBtnTxt()
{
	// TODO: 在此添加控件通知处理程序代码
	//打开文本文件
	CFileDialog dlg(TRUE, NULL, NULL, 
		0, _T("*.txt|*.txt||"), this);
	if(dlg.DoModal() == IDOK)
		OpenTheFile(dlg.GetPathName());
}


void CShellOpenDlg::OnBnClickedBtnBmp()
{
	// TODO: 在此添加控件通知处理程序代码
	//打开图片文件
	CFileDialog dlg(TRUE, NULL, NULL, 
		0, _T("*.bmp|*.bmp|*.jpg|*.jpg||"), this);
	if(dlg.DoModal() == IDOK)
		OpenTheFile(dlg.GetPathName());
}


void CShellOpenDlg::OnBnClickedBtnUrl()
{
	// TODO: 在此添加控件通知处理程序代码
	//打开网址
	CInputDlg dlg(this, _T("输入"), _T("请输入一个网址:"), 
		_T("http://www.GOOGLE.com"));
	if(dlg.DoModal() == IDOK)
	{
		OpenTheFile(dlg.GetInputText());
	}
}

//需要系统中有outlook等软件
void CShellOpenDlg::OnBnClickedBtnMail()
{
	// TODO: 在此添加控件通知处理程序代码
	//打开邮件编辑器
	CInputDlg dlg(this, _T("输入"), _T("请输入一个邮件地址:"), 
		_T("[email protected]"));
	if(dlg.DoModal() == IDOK)
	{
		CString str;
		str.Format(
			_T("mailto:%s?subject=测试邮件&body=测试ShellOpen程序。"), 
			dlg.GetInputText());
		OpenTheFile(str);
	}
}

添加函数:

protected:
	void OpenTheFile(LPCTSTR lpFilename);

void CShellOpenDlg::OpenTheFile(LPCTSTR lpFilename)
{
	//利用系统命令打开文档
	ShellExecute(m_hWnd, _T("open"), lpFilename, 
		NULL, NULL, SW_SHOWNORMAL);
}

要将之前的CInputDlg类添加到项目里

22打开文档ShellExcute_第1张图片

你可能感兴趣的:(《VC++实例精通》手记)