MFC实现点击按钮打开一个指定的文件或者网址或者exe

函数名:OnBnClickedButtonOpen

函数功能:通过点击一个按钮实现打开一个指定的文本文件

参数:无

返回值:void

额外说明:除了可以打开文件,还可以打开指定的网址或者可执行exe程序(可传入命令行参数和指定是否显示界面)

作者:weekdawn


void CmhtEDIT2Dlg::OnBnClickedButtonOpen()
{
	// TODO: 在此添加控件通知处理程序代码
	mhtPath = _T("\"C:\\test.txt\"");		//这里添加需要查看的文件路径或者网址(http://**)或者exe文件。若写成test.exe,则默认当前目录下
	ShellExecute(NULL, _T("open"), mhtPath, NULL, NULL,SW_SHOWNORMAL);	//第4个参数可传入命令行参数,第5个参数可指定文件目录,第6个参数可为SW_HIDE不显示或者SW_SHOW显示
}


  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
MFC打开文件文件夹 一、利用API实现打开文件对话框和利用MFC实现打开文件对话框。 方法一:API部分: // OPENFILENAME ofn; // TCHAR szFile[MAX_PATH]; // ZeroMemory(&ofn,sizeof(ofn)); // ofn.lStructSize = sizeof(ofn); // ofn.lpstrFile = szFile; // ofn.lpstrFile[0] = TEXT('/0'); // ofn.nMaxFile = sizeof(szFile); // ofn.lpstrFilter = TEXT("all/0*.*/0jpg/0*.jpg/0bmp/0*.bmp/0"); //定义三个选项,all,text和exe // ofn.nFilterIndex = 1; //定义首选项是哪一个 // ofn.lpstrFileTitle = NULL; // ofn.nMaxFileTitle = 0; // ofn.lpstrInitialDir = NULL; // ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; // if(GetOpenFileName(&ofn)) // { // ::SetDlgItemText(this->m_hWnd,IDC_EDIT1,szFile); // } 方法二、MFC实现 // CFileDialog dlg(TRUE, NULL, NULL, // OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, // NULL); // // if(dlg.DoModal() == IDOK) // { // szFilename = dlg.GetPathName(); // ::MessageBox(NULL,szFilename,NULL,MB_OK); // } 注意:打开文件的方式和打开文件夹的方式是不同的。打开文件的方式是不断的打开直到出现末端为文件,否则遇到文件夹还要继续打开。而打开文件夹则是只要选择到一个路径的文件夹就打开。 下面的这种方式是打开文件夹:MFC实现。 static TCHAR strDirName[MAX_PATH]; BROWSEINFO bi; CString szString = TEXT("选择一个文件文件夹"); bi.hwndOwner = ::GetFocus(); bi.pidlRoot = NULL; bi.pszDisplayName = strDirName; bi.lpszTitle = szString; bi.ulFlags = BIF_BROWSEFORCOMPUTER | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0; LPITEMIDLIST pItemIDList = ::SHBrowseForFolder(&bi); if(pItemIDList == NULL) { return ; } ::SHGetPathFromIDList(pItemIDList, strDirName); CString str = strDirName; if(str != "" && str.Right(1) != '//') str += '//'; ::SetDlgItemText(this->m_hWnd,IDC_EDIT1,str);
### 回答1: 在MFC中嵌入CEF(Chromium Embedded Framework)并打开多个网址可以通过以下步骤实现: 首先,你需要将CEF集成到你的MFC应用程序中。你可以从CEF的官方网站下载最新的CEF二进制文件,并按照官方文档中的指导进行安装和配置。安装完成后,你将得到一个CEF库文件和相应的头文件。 接下来,在MFC应用程序中创建一个派生自CWinApp的类,例如CMyApp。在CMyApp类的初始化函数中,需要添加CEF的初始化代码。这包括设置CEF的路径、版本和其他必要的配置参数。 然后,在你的MFC应用程序的主窗口或对话框中,添加一个CWnd控件作为CEF的容器。你可以使用CreateWindowEx函数创建一个属于你的CWnd派生类的窗口,并将其作为容器来嵌入CEF。 最后,在你的MFC应用程序中,添加一个方法来加载和显示网页。你可以使用CEF提供的CefBrowserHost接口来加载指定网址,并将其显示在容器窗口中。你可以创建多个CefBrowserHost来加载和显示多个网页。 例如,你可以创建一个CefBrowserHost指针数组,每个指针对应一个网页。然后,循环遍历数组,为每个指针创建一个CEF窗口,并加载相应的网址。 总结起来,将CEF嵌入到MFC打开多个网址的主要步骤包括:下载和安装CEF,配置CEF的初始化参数,创建一个CEF的容器窗口,并使用CefBrowserHost加载和显示多个网页。具体的实现细节和代码可以根据你的需求进行调整和扩展。 ### 回答2: 在使用MFC嵌入CEF(Chromium Embedded Framework)实现同时打开多个网址的过程中,我们可以按照以下步骤进行: 1. 创建一个MFC应用程序,并在主窗口中添加一个Web浏览器控件。 2. 导入CEF库文件并进行相关的配置。 3. 在主窗口类中定义CEF浏览器对象变量,例如CefRefPtr<CefBrowser> m_browser。 4. 在主窗口的OnInitDialog()函数中,首先调用CEF框架的初始化函数,确保CEF能够正常工作。例如CefInitialize()。 5. 在OnInitDialog()函数中,使用CEF浏览器对象变量m_browser调用CEF创建新的浏览器窗口的函数,并指定打开网址。例如m_browser = CefBrowserHost::CreateBrowserSync(...); 6. 在主窗口中添加打开网址的按钮,将其与一个响应函数关联,例如OnOpenUrl()。 7. 在OnOpenUrl()函数中,可以通过调用CEF浏览器对象变量m_browser的LoadURL()函数来打开一个网址。例如m_browser->GetMainFrame()->LoadURL(url); 8. 重复第7步,可以在OnOpenUrl()函数中多次调用LoadURL()函数来同时打开多个网址。 以上步骤仅是一个大致的流程,具体实现可能还需要考虑到处理多个网址的逻辑、界面的更新等问题。同时,在处理多个网址时,可能需要合理控制CEF的资源占用,避免内存或性能问题。 ### 回答3: CEF(Chromium Embedded Framework)是一种嵌入式的浏览器引擎,它可以让我们将现代化的浏览器功能集成到我们自己的应用程序中。在MFC(Microsoft Foundation Class)中,我们可以使用CEF来打开多个网址。 首先,我们需要在MFC应用程序中集成CEF。我们可以下载CEF的最新版本,并将其添加到我们的项目中。然后,我们需要在MFC应用程序的代码中初始化和启动CEF。 一旦CEF已经集成到MFC应用程序中,我们可以使用CEF提供的API来打开多个网址。我们可以创建一个cef::Browser类的实例,该实例表示一个浏览器窗口,并使用该实例的LoadURL()方法来加载指定网址。 下面是一个简单的示例代码,用于在MFC打开多个网址: ```cpp #include "include/cef_base.h" #include "include/cef_browser.h" #include "include/cef_command_line.h" #include "include/cef_frame.h" #include "include/cef_runnable.h" #include "include/wrapper/cef_helpers.h" class MyBrowser : public CefBrowser { public: MyBrowser(CefRefPtr<CefBrowserHost> browser_host) : CefBrowser(browser_host) {} void LoadURL(const std::string& url) override { CefRefPtr<CefFrame> frame = GetMainFrame(); frame->LoadURL(url); } }; class CefApp : public CefApp { public: void OnContextInitialized() override { CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine(); command_line->InitFromString(::GetCommandLine()); // Initialize CEF with the command line provided. CefInitialize(*command_line, nullptr, nullptr, nullptr); } void OnBeforeCommandLineProcessing( const CefString& process_type, CefRefPtr<CefCommandLine> command_line) override { // Disable GPU acceleration. command_line->AppendSwitch("disable-gpu"); } void OnRenderProcessThreadCreated( CefRefPtr<client::CefRenderProcessHandler> handler) override { AddCustomHandlers(renderer) ; } void OnRegisterCustomSchemes( CefRefPtr<CefSchemeRegistrar> registrar) override { RegisterCustomHandlers(registrar); } IMPLEMENT_REFCOUNTING(CefApp); }; class CefBrowserApp : public CWinApp { public: BOOL InitInstance() override { // Initialize CEF. CefMainArgs main_args(::GetModuleHandle(NULL)); // Create an instance of CefApp. CefRefPtr<CefApp> app(new CefApp()); // Execute the secondary process, if any. int exit_code = CefExecuteProcess(main_args, app, nullptr); if (exit_code >= 0) { // Terminate the main process, if the secondary process was started successfully. return FALSE; } // Create the main window and load the initial URL. m_mainWnd = new CMainFrame(); m_pMainWnd = m_mainWnd; CefWindowInfo window_info; CefBrowserSettings browser_settings; window_info.SetAsChild(m_mainWnd->m_hWnd, m_mainWnd->GetClientRect()); m_browser = CefBrowserHost::CreateBrowserSync( window_info, app, "https://www.example1.com", browser_settings, nullptr); // Open multiple URLs. m_browser->LoadURL("https://www.example2.com"); m_browser->LoadURL("https://www.example3.com"); // ... m_mainWnd->ShowWindow(SW_SHOW); m_mainWnd->UpdateWindow(); return TRUE; } int ExitInstance() override { CefShutdown(); return CWinApp::ExitInstance(); } private: CMainFrame* m_mainWnd; CefRefPtr<CefBrowser> m_browser; }; CefBrowserApp theApp; ``` 在以上示例代码中,我们在`CefBrowserApp::InitInstance()`函数中创建了一个名为`m_browser`的CEF浏览器实例,并使用`LoadURL()`方法加载了多个网址。在这个例子中,我们打开了3个网址,但你可以根据需要添加更多的URL。 总之,使用CEF嵌入到MFC打开多个网址的方法是:创建一个CEF浏览器实例,并使用`LoadURL()`方法加载多个网址
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值