VC 实现文件关联
- 格式:doc
- 大小:48.00 KB
- 文档页数:11
电脑如何设置文件关联文件关联是指将特定的文件类型与相应应用程序进行绑定,使得当用户双击文件时,计算机可以自动使用正确的应用程序来打开该文件。
通过设置文件关联,可以提高工作和学习的效率,本文将向你介绍如何在电脑上设置文件关联。
一、Windows系统下设置文件关联在Windows系统中,设置文件关联非常简单,可以按照以下步骤进行操作:1. 打开“控制面板”点击开始按钮,在搜索栏中输入“控制面板”,然后点击打开。
2. 进入“默认程序”在控制面板中,找到并点击“默认程序”。
3. 选择“关联文件类型”在默认程序界面中,可以看到“关联文件类型”这一项,点击进入。
4. 找到需要设置关联的文件类型在关联文件类型界面,可以找到各种已有的文件类型及其对应的默认打开程序。
根据自己的需要,找到需要设置关联的文件类型。
5. 修改默认程序选中需要设置关联的文件类型,点击右侧的“更改程序”按钮。
然后从弹出的应用程序列表中选择你想要用来打开该文件类型的程序。
6. 确认设置点击“确定”按钮,保存修改后的文件关联设置。
从现在起,当你双击该类型的文件时,计算机将使用你所设置的默认程序来打开它。
二、Mac系统下设置文件关联在Mac系统中,设置文件关联也很简单,可以按照以下步骤进行操作:1. 选中文件在Finder中找到需要设置文件关联的文件,点击右键,在弹出的菜单中选择“打开方式”,然后选择“其他”。
2. 选择应用程序在弹出的对话框中,可以看到各种应用程序。
可以直接从列表中选择你希望用来打开该文件的应用程序,或者点击左侧的“应用程序”文件夹,在右侧的列表中选择。
3. 确认设置选择完应用程序后,点击“打开”按钮即可。
从现在起,当你双击该文件时,计算机将使用你所设置的应用程序来打开它。
三、常见问题与解决方法1. 如何取消文件关联?如果你想取消某个文件类型的关联,可以按照上述步骤进入文件关联设置界面,在需要取消关联的文件类型上点击右键,然后选择“删除”。
如何在Windows操作系统中设置文件关联Windows操作系统中的文件关联是指将特定的文件类型与特定的程序或应用程序相关联。
这样,当我们双击一个文件时,操作系统会自动调用关联的程序或应用程序来打开该文件,方便我们的文件管理和使用。
本文将介绍如何在Windows操作系统中设置文件关联的方法。
一、使用默认设置关联文件在Windows操作系统中,很多文件类型已经预设了默认的关联程序。
当我们双击这些文件时,系统会自动调用默认的程序打开这些文件。
这些预设的文件关联通常在安装相关程序或应用程序时自动设置好,但有时候可能会被其他程序更改或覆盖。
如果我们想要使用默认设置的关联程序打开某个文件,可以通过以下步骤进行设置:1. 找到需要关联的文件,例如扩展名为.doc的Word文档。
2. 右键点击该文件,选择“打开方式”或“打开方式”下的“从列表中选择默认程序”。
3. 在弹出的窗口中,选择“常用程序”或“其他选项”,然后选择希望关联的程序,如Microsoft Word。
4. 勾选“将该程序设置为默认程序”,然后点击“确定”即可完成文件关联。
通过以上步骤,我们可以将文件关联恢复为默认设置,从而使用默认的程序打开文件。
二、自定义文件关联除了使用默认的文件关联设置,我们还可以自定义文件关联,将特定的文件类型与我们自己喜欢的程序或应用程序关联起来。
下面是自定义文件关联的步骤:1. 找到需要自定义关联的文件,例如扩展名为.txt的文本文件。
2. 右键点击该文件,选择“打开方式”或“打开方式”下的“从列表中选择默认程序”。
3. 在弹出的窗口中,选择“其他选项”或“浏览”,然后找到我们希望关联的程序或应用程序的可执行文件(一般是该程序或应用程序的安装文件)。
4. 选中该可执行文件,点击“确定”即可完成自定义的文件关联。
通过以上步骤,我们可以将文件类型关联到我们自己选择的程序或应用程序上。
三、修复文件关联问题有时候,我们可能会遇到文件关联出现问题的情况,例如双击一个文件无法打开或错误关联到其他程序。
如何设置电脑文件关联在现代社会中,电脑文件关联是我们经常需要处理的问题之一。
当我们打开一个文件时,电脑会自动选择默认程序进行打开。
然而,有时候我们希望将文件关联到其他程序,以满足个人需求。
本文将介绍如何设置电脑文件关联,让您能够根据自己的喜好和需求灵活选择打开文件的方式。
一、Windows系统设置电脑文件关联Windows操作系统为我们提供了简单而有效的方式来设置电脑文件关联。
以下是详细步骤:1. 找到要设置关联的文件类型。
您可以通过双击文件,查看它的扩展名(文件后缀)来确定文件类型。
例如,.docx表示Microsoft Word 文档。
2. 找到“控制面板”并打开。
您可以通过点击开始菜单,然后在搜索栏中输入“控制面板”来快速找到它。
3. 在“控制面板”中,选择“程序”或者“程序和功能”,然后点击“默认程序”。
4. 在“默认程序”窗口中,选择“关联一个文件类型或协议与某个程序”。
5. 在列表中找到您想要设置关联的文件类型,并点击它。
6. 点击右侧的“更改程序”按钮。
7. 在弹出的程序列表中,选择您想要关联的程序,或者点击“浏览”按钮来找到其他程序。
8. 确认选择后,点击“确定”按钮,完成文件关联的设置。
二、macOS系统设置电脑文件关联macOS操作系统也提供了简单易用的方式来设置电脑文件关联。
以下是详细步骤:1. 找到要设置关联的文件。
您可以通过双击文件,在弹出的对话框中查看文件详情,包括其类型。
2. 选择要关联的文件,并按下“Command + I”组合键(或者在菜单中选择“文件”>“显示简介”)。
3. 在弹出的文件信息窗口中,找到“打开方式”部分。
4. 点击“打开方式”下的“下拉菜单”按钮。
5. 从列表中选择您想要关联的程序,或者点击“其他”按钮来找到其他程序。
6. 选择关联程序后,点击“添加”按钮。
7. 关闭文件信息窗口,完成文件关联的设置。
三、Linux系统设置电脑文件关联Linux操作系统的文件关联设置方式可能会因发行版而异。
如何设置电脑的文件关联随着科技的不断发展,电脑已经成为现代人工作、学习及娱乐的重要工具之一。
电脑上的各种文件类型众多,而我们经常需要使用特定类型的软件来打开相应类型的文件。
因此,设置电脑的文件关联是非常重要的。
本文将介绍如何设置电脑的文件关联,让您轻松应对各种文件类型。
一、什么是文件关联文件关联是指将特定的文件类型与特定的软件进行绑定,使得双击文件时能够自动使用相应的软件打开文件。
比如,让电脑知道.xlsx文件需要使用微软的Excel软件打开,.mp4文件需要使用视频播放器打开等等。
二、设置文件关联的步骤设置电脑的文件关联并不复杂,下面将为您详细介绍具体的步骤。
1. 打开“控制面板”在Windows操作系统中,点击电脑屏幕左下角的“开始”按钮,然后选择“控制面板”选项。
2. 进入“默认程序”设置页面在控制面板中,找到并点击“默认程序”选项。
3. 选择“关联文件类型”在“默认程序”页面中,找到并点击“关联文件类型”选项。
4. 找到需要设置关联的文件类型在“关联文件类型”页面中,您可以找到各种常见的文件类型和相应的扩展名。
例如,如果要设置.pdf文件的关联,就需要找到并点击.pdf 文件类型。
5. 选择默认的打开方式在文件类型的详细页面中,您可以看到已经关联到该文件类型的默认程序。
如果您想更改关联程序,只需点击“更改程序”按钮,然后选择您想要的程序并点击“确定”按钮即可。
6. 手动添加文件关联除了修改默认程序外,有些文件类型可能并未关联到任何程序。
在文件类型的详细页面,您可以点击“添加”按钮手动添加文件关联。
在弹出的窗口中,选择合适的程序并点击“确定”按钮。
7. 检查关联设置在完成关联设置后,您可以通过双击相应的文件来检查设置是否成功。
如果一切正常,电脑会自动使用您设置的程序打开文件。
三、注意事项在进行文件关联设置时,有几个注意事项需要特别留意。
1. 明确文件类型在设置文件关联之前,应该清楚所需关联的文件类型。
怎样在Windows系统中设置文件关联在Windows系统中,我们常常需要设置文件关联来确定特定类型的文件应该由哪个程序打开。
文件关联指的是将特定文件类型与特定应用程序关联起来,使得在双击文件时,系统能够自动启动相应的程序来打开该文件。
本文将介绍在Windows系统中设置文件关联的方法。
一、使用默认程序设置文件关联在Windows系统中,我们可以通过以下步骤来设置文件关联:1. 右键点击要设置关联的文件。
2. 选择“打开方式”或“打开文件方式”选项。
3. 在弹出的菜单中,可以选择“其他应用”或“从应用商店安装”选项来选择使用特定的应用程序打开该文件。
4. 如果想要将该应用程序设置为默认程序来打开该文件类型,可以勾选“始终使用此应用打开.xxx文件”选项。
二、使用控制面板设置文件关联除了使用默认程序设置文件关联,我们还可以通过控制面板来完成设置。
具体步骤如下:1. 打开“控制面板”。
2. 在控制面板中,选择“程序”或“程序和功能”选项。
3. 点击“默认程序”选项。
4. 在默认程序中,可以选择“设置默认关联”来设置文件关联。
5. 在弹出的窗口中,可以按照文件扩展名的字母顺序,找到要设置关联的文件类型。
6. 点击该文件类型,然后选择“更改程序”来指定使用哪个程序打开该文件。
三、使用第三方工具设置文件关联除了系统自带的设置文件关联的方式,我们还可以使用一些第三方工具来进行设置。
这些工具通常提供了更丰富的功能,比如批量设置文件关联、备份和恢复关联等。
其中比较常用的工具有“Default Programs Editor”、“FileTypesMan”等。
四、注意事项在设置文件关联时,我们需要注意以下几点:1. 谨慎选择默认程序:在设置默认程序时,我们需要确保所选择的程序能够正确打开相应的文件类型,并且不会给系统带来安全问题。
2. 小心选择第三方工具:如果使用第三方工具来设置文件关联,我们需要选择信誉良好的工具,并遵循其提供的操作指导,以免造成不必要的麻烦或安全问题。
visual studio code 关联方法摘要:1. Visual Studio Code 简介2.关联方法的概念3.关联方法的用途4.关联方法的实现步骤5.实战案例:使用关联方法简化代码6.总结与建议正文:【1.Visual Studio Code 简介】Visual Studio Code(简称VS Code)是一款免费、开源的跨平台代码编辑器,由微软开发。
它具有丰富的功能和扩展性,广泛应用于各种编程语言的开发。
今天我们将介绍如何在VS Code 中使用关联方法,以提高代码的可读性和实用性。
【2.关联方法的概念】关联方法(also known as extension methods)是C# 语言中一种特殊的方法,它允许您在现有类型的基础上添加新的方法,而无需修改原有类型的源代码。
通过关联方法,我们可以更方便地使用现有类型的功能,同时保持代码的封装性。
【3.关联方法的用途】关联方法的用途主要包括以下几点:1.扩展类的功能:通过添加关联方法,可以为现有类型提供更多实用功能,而无需修改原有类型的代码。
2.提高代码可读性:使用关联方法可以减少冗余代码,使代码更加简洁易懂。
3.保持代码封装性:关联方法可以在不影响原有类型封装性的前提下,为类型提供额外功能。
【4.关联方法的实现步骤】在VS Code 中使用关联方法,可以遵循以下步骤:1.打开VS Code,创建或打开一个C# 项目。
2.在需要添加关联方法的类型上,右键单击选择“添加关联方法”。
3.填写关联方法的名称、参数列表和返回值类型。
4.编写关联方法的实现代码。
【5.实战案例:使用关联方法简化代码】以下是一个使用关联方法简化代码的示例:```csharpusing System;public class MyClass{public int MyProperty { get; set; }public void MyMethod(int value){Console.WriteLine("Value before: " + MyProperty);MyProperty += value;Console.WriteLine("Value after: " + MyProperty);}// 添加关联方法public static void MyMethodWithoutParams(int value) {Console.WriteLine("Value before: " + MyProperty);MyProperty += value;Console.WriteLine("Value after: " + MyProperty);}}class Program{static void Main(string[] args){MyClass obj = new MyClass();obj.MyProperty = 10;obj.MyMethod(5);// 使用关联方法MyClass.MyMethodWithoutParams(3);Console.ReadLine();}}```在上面的示例中,我们为MyClass 类型添加了一个名为MyMethodWithoutParams 的关联方法。
C++实现⽂件关联 下⾯这段话是百度百科对⽂件关联的解释。
⽂件关联就是将⼀种类型的⽂件与⼀个可以打开它的建⽴起⼀种依存关系。
举个例⼦来说,(BMP⽂件)在Windows中的默认关联是“画图”,如果将其默认关联改为⽤ACDSee程序来打开,那么ACDSee就成了它的默认关联程序。
实际上就是设置⼀种⽂件的默认打开⽅式。
⽂件关联的信息都写在注册表⾥,需要写⼊/修改注册表信息来实现⽂件关联。
下⾯给出如何设置⼀种⽂件的默认打开程序及显⽰的图标的代码。
⽂件关联的两个简单函数:// 检测⽂件关联情况// strExt: 要检测的扩展名(例如: ".txt")// strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")// 返回TRUE: 表⽰已关联,FALSE: 表⽰未关联BOOL CheckFileRelation(const char *strExt, const char *strAppKey){int nRet=FALSE;HKEY hExtKey;char szPath[_MAX_PATH];DWORD dwSize=sizeof(szPath);if(RegOpenKey(HKEY_CLASSES_ROOT,strExt,&hExtKey)==ERROR_SUCCESS){RegQueryValueEx(hExtKey,NULL,NULL,NULL,(LPBYTE)szPath,&dwSize);if(_stricmp(szPath,strAppKey)==0){nRet=TRUE;}RegCloseKey(hExtKey);return nRet;}return nRet;}//---------------------------------------------------------------------------// 注册⽂件关联// strExe: 要检测的扩展名(例如: ".txt")// strAppName: 要关联的应⽤程序名(例如: "C:\MyApp\MyApp.exe")// strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")// strDefaultIcon: 扩展名为strAppName的图标⽂件(例如: "C:\MyApp\MyApp.exe,0")// strDescribe: ⽂件类型描述void RegisterFileRelation(char *strExt, char *strAppName, char *strAppKey, char *strDefaultIcon, char *strDescribe){char strTemp[_MAX_PATH];HKEY hKey;RegCreateKey(HKEY_CLASSES_ROOT,strExt,&hKey);RegSetValue(hKey,"",REG_SZ,strAppKey,strlen(strAppKey)+1);RegCloseKey(hKey);RegCreateKey(HKEY_CLASSES_ROOT,strAppKey,&hKey);RegSetValue(hKey,"",REG_SZ,strDescribe,strlen(strDescribe)+1);RegCloseKey(hKey);sprintf(strTemp,"%s\\DefaultIcon",strAppKey);RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);RegSetValue(hKey,"",REG_SZ,strDefaultIcon,strlen(strDefaultIcon)+1);RegCloseKey(hKey);sprintf(strTemp,"%s\\Shell",strAppKey);RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);RegSetValue(hKey,"",REG_SZ,"Open",strlen("Open")+1);RegCloseKey(hKey);sprintf(strTemp,"%s\\Shell\\Open\\Command",strAppKey);RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);sprintf(strTemp,"%s \"%%1\"",strAppName);RegSetValue(hKey,"",REG_SZ,strTemp,strlen(strTemp)+1);RegCloseKey(hKey);}//使⽤这两个函数进⾏关联的⽰例代码char strExt[10] = ".REC";char strAppKey[20] = "WellTest.REC.1.0";BOOL relationExists = CheckFileRelation(strExt, strAppKey);if(!relationExists){ char strAppName[MAX_PATH + 1] = "C:\\WellTest\\trunk\\bin\\WellTest.exe";char strDefaultIcon[MAX_PATH + 1] = "C:\\WellTest\\trunk\\bin\\WellTest.exe,0"; char strDescribe[100] = "WellTest Interpretation Files";RegisterFileRelation(strExt, strAppName, strAppKey, strDefaultIcon, strDescribe);}。
VC/MFC 设置程序与文件关联与双击文件获取文件路径(2008-10-10 10:59:15)分类:编程技术标签:vc/mfc设置程序与文件关联双击文件获取文件路径it如何设置程序与文件关联并且双击关联文件时获取文件的路径呢?一般来说可以通过写注册表的方式实现,在函数入口处实现功能。
例如在VC/MFC中,可以在应用程序的C**App.cpp文件中InitInstance()函数中实现该功能。
#include <string>using namespace std;//关联文件的后缀名,如"txt"、"doc"等string m_csExtension;string m_csShellOpenCommand;string m_csDocumentShellOpenCommand;//注册表中文件夹类名string m_csDocumentClassName;//关联文件的默认图标string m_csDocumentDefaultIcon;///////赋值函数//////void SetExtension( LPCTSTR szExtension ){m_csExtension = szExtension;}void SetShellOpenCommand( LPCTSTR szShellOpenCommand ){m_csShellOpenCommand = szShellOpenCommand;}void SetDocumentShellOpenCommand( LPCTSTR szDocumentShellOpenCommand ){m_csDocumentShellOpenCommand = szDocumentShellOpenCommand;}void SetDocumentClassName( LPCTSTR szDocumentClassName ){m_csDocumentClassName = szDocumentClassName;}void SetDocumentDefaultIcon( LPCTSTR szDocumentDefaultIcon ){m_csDocumentDefaultIcon = szDocumentDefaultIcon;}///////赋值函数////////////关键函数:实现写注册表的函数////////BOOL SetRegistryValue(HKEY hOpenKey,LPCTSTR szKey,LPCTSTR szValue,LPCTSTR szData){// validate inputif( !hOpenKey || !szKey || !szKey[0] ||!szValue || !szData ){::SetLastError(E_INVALIDARG);return FALSE;}BOOL bRetVal = FALSE;DWORD dwDisposition;DWORD dwReserved = 0;HKEY hTempKey = (HKEY)0;// length specifier is in bytes, and some TCHAR// are more than 1 byte eachDWORD dwBufferLength = lstrlen(szData) * sizeof(TCHAR);// Open key of interest// Assume all access is okay and that all keys will be stored to file// Utilize the default security attributesif( ERROR_SUCCESS == ::RegCreateKeyEx(hOpenKey, szKey, dwReserved, (LPTSTR)0, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, 0,&hTempKey, &dwDisposition) ){// dwBufferLength must include size of terminating nul// character when using REG_SZ with RegSetValueEx functiondwBufferLength += sizeof(TCHAR);if( ERROR_SUCCESS == ::RegSetValueEx(hTempKey, (LPTSTR)szValue, dwReserved, REG_SZ, (LPBYTE)szData, dwBufferLength) ){bRetVal = TRUE;}}// close opened keyif( hTempKey ){::RegCloseKey(hTempKey);}return bRetVal;}BOOL RegSetExtension(void){if( m_csExtension.empty() ){return FALSE;}std::string csKey = "." + m_csExtension;SetRegistryValue(HKEY_CLASSES_ROOT, csKey.c_str(), "", m_csDocumentClassName.c_str());if( !m_csShellOpenCommand.empty() ){csKey += "\\shell\\open\\command";SetRegistryValue(HKEY_CLASSES_ROOT, csKey.c_str(), "", m_csShellOpenCommand.c_str());}return TRUE;}BOOL RegSetDocumentType(void){if( m_csDocumentClassName.empty()){return FALSE;}std::string csKey = m_csDocumentClassName;SetRegistryValue(HKEY_CLASSES_ROOT, csKey.c_str(), "", m_csDocumentDescription.c_str());// DefaultIconif( !m_csDocumentDefaultIcon.empty() ){csKey = m_csDocumentClassName;csKey += "\\DefaultIcon";SetRegistryValue(HKEY_CLASSES_ROOT, csKey.c_str(), "", m_csDocumentDefaultIcon.c_str());}// shell\open\commandif( !m_csShellOpenCommand.empty() ){csKey = m_csDocumentClassName;csKey += "\\shell\\open\\command";SetRegistryValue(HKEY_CLASSES_ROOT, csKey.c_str(), "",m_csShellOpenCommand.c_str());}return TRUE;}BOOL RegSetAllInfo(void){RegSetExtension(); RegSetDocumentType();return TRUE;}//注册程序与文件后缀名的关联void RegisterFileAndProgram(){////一个应用程序与多个文件后缀关联//// #define strExternsionLength 4LPCTSTR strExtension[] ={"bmp","jpg","jpe","jpeg"};CGCFileTypeAccess TheFTA;TCHAR szProgPath[MAX_PATH * 2];//获取程序路径::GetModuleFileName(NULL, szProgPath, sizeof(szProgPath)/sizeof(TCHAR)); CString csTempText;for(int i = 0; i < strExternsionLength; ++i){//设置程序需要关联的后缀名,如"txt" "doc" 等SetExtension(strExtension[i]);csTempText.Format("\"%s\" %s",szProgPath,"\"%1\"");SetShellOpenCommand(csTempText);SetDocumentShellOpenCommand(csTempText);//设置注册表中文件类的别名,例如可以是程序名称:**.exeSetDocumentClassName("**");// use first icon in programcsTempText = szProgPath;csTempText += ",0";SetDocumentDefaultIcon(csTempText);RegSetAllInfo();}}//入口函数:初始化所需的操作BOOL C**App::InitInstance(){////////////***Code***//////////注册程序与文件后缀名的关联RegisterFileAndProgram();// 分析标准外壳命令、DDE、打开文件操作的命令行CCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);//获取命令行传过来的参数:双击打开的文件的文件路径名称CString strFilePathName = cmdInfo.m_strFileName;// 调度在命令行中指定的命令。
如何设置设置文件关联Step一、预备工作引入名字空间:using ;using ;Step二、修改注册表项(设置关联)try{string MyFileName=@"F:\vs2020project\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\";string MyExtName=".zb";string MyType="自概念文本类型";string MyContent="text/plain";RegistryKey MyReg= ("", MyType);("Content Type", MyContent);MyReg = ("shell\\open\\command");("", MyFileName + " %1");();("设置文件关联操作成功!", "信息提示", , ;}catch(Exception ex){, "信息提示", , ;}代码说明:一、string MyFileName ; 注册表项的名称自概念意义不大二、string MyExtName; 关联文件的扩展名二、string MyType; 给自概念文件类型起的名称意义不大3、key = 概念文件关联注册表项的属性Step3、关联文件启动运行时载入文件private void Form1_Load(object sender, EventArgs e){string command = ;文件类型)"的项如[.3gp(表示3gp后缀)],项的 Default键值确实是文件关联类型,即"Default"="文件关联类型"如[Default=3gpfile(表示关联到3gp文件类型)],这儿确实是更改文件关联需要动刀子的要紧部位之一。
c++实现两个⽂件的拼接。
问题描述: 要求把第⼆个⽂件拼接到第⼀个⽂件的末尾。
如把file2 拼接到 file末尾。
(直接复制⼀下不就⾏了嘛!但是⽼师⾮让编程,真是蛋疼!!,⽽且是闲的蛋疼)。
例如:file1: I am not responsible of this code. They made me write it, against my will. file2: When I wrote this, only God and I understood what I was doing. Now, God only kowns. 拼接后: file1: I am not responsible of this code. They made me write it, against my will. When I wrote this, only God and I understood what I was doing. Now, God only kowns.知识点:⽂件流类。
#include<iostream>#include<fstream>using namespace std;const int maxn = 1000+10;int main(){char str[maxn];ifstream cin("file2.txt");ofstream cout("file1.txt", ios::app);while(cin.getline(str, maxn)){cout<<str<<endl;}return0;}⼀周内请勿抄袭!以防作业雷同!后⾯的题⽬也是我的作业题,也都是关于I/0流的,只不过⽐较⽔! I/0流是理解C++⾯向对象的典型例⼦之⼀,所以在此也附上。
《2》使⽤I/O流,以⽂本⽅式建⽴⼀个⽂件。
在C语言项目中,文件之间的依赖关系是一个重要的概念,它决定了代码的模块化和可维护性。
文件之间的依赖关系通常包括函数调用、头文件包含以及库文件的引用等。
下面我将从三个方面来阐述C项目文件之间的依赖关系:1. 函数调用依赖在C语言中,函数调用是实现程序功能的重要方式。
当一个函数被调用时,它所需要的参数和返回值类型可能会依赖于其他文件中的数据类型或变量。
因此,在编写代码时,需要考虑到函数之间的依赖关系,避免出现函数调用失败或数据不匹配的情况。
为了解决函数调用依赖问题,可以采用以下几种方法:* 参数类型定义一致性:在调用函数时,需要确保传递的参数类型与被调用函数所要求的参数类型一致,以避免出现类型不匹配的问题。
* 返回值类型一致性:如果一个函数返回一个值,那么调用该函数的代码需要确保返回值的类型一致,以避免出现错误或异常。
* 函数声明和实现分离:为了避免出现重复定义或冲突的情况,可以将函数的声明和实现分别放在不同的文件中,以实现模块化编程。
2. 头文件包含依赖头文件是C语言中用于定义函数原型、数据结构和常量等公共接口的文件。
在编写代码时,头文件的包含关系也是文件之间依赖关系的一个重要方面。
如果一个头文件被多个文件包含,那么在修改该头文件时,需要考虑到所有使用该头文件的代码都需要进行相应的修改,否则可能会出现编译错误或运行时错误。
为了解决头文件包含依赖问题,可以采用以下几种方法:* 遵循模块化编程原则:将功能相似的代码放在同一个文件中,以减少头文件的包含关系。
* 使用include guard宏:在头文件中使用include guard宏(如#ifndef、#define、#endif等)来避免重复包含,以提高编译效率。
* 使用预处理器命令:在Makefile等构建工具中,可以使用预处理器命令(如-include或-I)来包含或排除特定的头文件,以实现头文件的动态加载和卸载。
3. 库文件依赖库文件是C语言中用于提供常用功能和算法的二进制文件。
VC/MFC 设置程序与文件关联与双击文件获取文件路径(2008-10-10 10:59:15)分类:编程技术标签:vc/mfc设置程序与文件关联双击文件获取文件路径it如何设置程序与文件关联并且双击关联文件时获取文件的路径呢?一般来说可以通过写注册表的方式实现,在函数入口处实现功能。
例如在VC/MFC中,可以在应用程序的C**App.cpp文件中InitInstance()函数中实现该功能。
#include <string>using namespace std;//关联文件的后缀名,如"txt"、"doc"等string m_csExtension;string m_csShellOpenCommand;string m_csDocumentShellOpenCommand;//注册表中文件夹类名string m_csDocumentClassName;//关联文件的默认图标string m_csDocumentDefaultIcon;///////赋值函数//////void SetExtension( LPCTSTR szExtension ){m_csExtension = szExtension;}void SetShellOpenCommand( LPCTSTR szShellOpenCommand ){m_csShellOpenCommand = szShellOpenCommand;}void SetDocumentShellOpenCommand( LPCTSTR szDocumentShellOpenCommand ){m_csDocumentShellOpenCommand = szDocumentShellOpenCommand;}void SetDocumentClassName( LPCTSTR szDocumentClassName ){m_csDocumentClassName = szDocumentClassName;}void SetDocumentDefaultIcon( LPCTSTR szDocumentDefaultIcon ){m_csDocumentDefaultIcon = szDocumentDefaultIcon;}///////赋值函数////////////关键函数:实现写注册表的函数////////BOOL SetRegistryValue(HKEY hOpenKey,LPCTSTR szKey,LPCTSTR szValue,LPCTSTR szData){// validate inputif( !hOpenKey || !szKey || !szKey[0] ||!szValue || !szData ){::SetLastError(E_INVALIDARG);return FALSE;}BOOL bRetVal = FALSE;DWORD dwDisposition;DWORD dwReserved = 0;HKEY hTempKey = (HKEY)0;// length specifier is in bytes, and some TCHAR// are more than 1 byte eachDWORD dwBufferLength = lstrlen(szData) * sizeof(TCHAR);// Open key of interest// Assume all access is okay and that all keys will be stored to file// Utilize the default security attributesif( ERROR_SUCCESS == ::RegCreateKeyEx(hOpenKey, szKey, dwReserved, (LPTSTR)0, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, 0,&hTempKey, &dwDisposition) ){// dwBufferLength must include size of terminating nul// character when using REG_SZ with RegSetValueEx functiondwBufferLength += sizeof(TCHAR);if( ERROR_SUCCESS == ::RegSetValueEx(hTempKey, (LPTSTR)szValue, dwReserved, REG_SZ, (LPBYTE)szData, dwBufferLength) ){bRetVal = TRUE;}}// close opened keyif( hTempKey ){::RegCloseKey(hTempKey);}return bRetVal;}BOOL RegSetExtension(void){if( m_csExtension.empty() ){return FALSE;}std::string csKey = "." + m_csExtension;SetRegistryValue(HKEY_CLASSES_ROOT, csKey.c_str(), "", m_csDocumentClassName.c_str());if( !m_csShellOpenCommand.empty() ){csKey += "\\shell\\open\\command";SetRegistryValue(HKEY_CLASSES_ROOT, csKey.c_str(), "", m_csShellOpenCommand.c_str());}return TRUE;}BOOL RegSetDocumentType(void){if( m_csDocumentClassName.empty()){return FALSE;}std::string csKey = m_csDocumentClassName;SetRegistryValue(HKEY_CLASSES_ROOT, csKey.c_str(), "", m_csDocumentDescription.c_str());// DefaultIconif( !m_csDocumentDefaultIcon.empty() ){csKey = m_csDocumentClassName;csKey += "\\DefaultIcon";SetRegistryValue(HKEY_CLASSES_ROOT, csKey.c_str(), "", m_csDocumentDefaultIcon.c_str());}// shell\open\commandif( !m_csShellOpenCommand.empty() ){csKey = m_csDocumentClassName;csKey += "\\shell\\open\\command";SetRegistryValue(HKEY_CLASSES_ROOT, csKey.c_str(), "",m_csShellOpenCommand.c_str());}return TRUE;}BOOL RegSetAllInfo(void){RegSetExtension(); RegSetDocumentType();return TRUE;}//注册程序与文件后缀名的关联void RegisterFileAndProgram(){////一个应用程序与多个文件后缀关联//// #define strExternsionLength 4LPCTSTR strExtension[] ={"bmp","jpg","jpe","jpeg"};CGCFileTypeAccess TheFTA;TCHAR szProgPath[MAX_PATH * 2];//获取程序路径::GetModuleFileName(NULL, szProgPath, sizeof(szProgPath)/sizeof(TCHAR)); CString csTempText;for(int i = 0; i < strExternsionLength; ++i){//设置程序需要关联的后缀名,如"txt" "doc" 等SetExtension(strExtension[i]);csTempText.Format("\"%s\" %s",szProgPath,"\"%1\"");SetShellOpenCommand(csTempText);SetDocumentShellOpenCommand(csTempText);//设置注册表中文件类的别名,例如可以是程序名称:**.exeSetDocumentClassName("**");// use first icon in programcsTempText = szProgPath;csTempText += ",0";SetDocumentDefaultIcon(csTempText);RegSetAllInfo();}}//入口函数:初始化所需的操作BOOL C**App::InitInstance(){////////////***Code***//////////注册程序与文件后缀名的关联RegisterFileAndProgram();// 分析标准外壳命令、DDE、打开文件操作的命令行CCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);//获取命令行传过来的参数:双击打开的文件的文件路径名称CString strFilePathName = cmdInfo.m_strFileName;// 调度在命令行中指定的命令。
如果// 用/RegServer、/Register、/Unregserver 或/Unregister 启动应用程序,则返回FALSE。