首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

下面个函数 如何修改成一个函数

2013-04-02 
下面个函数 怎么修改成一个函数?想修改成 CreateStringReg(HKEY hRoot,char *szSubKey,DWORD dwType, char

下面个函数 怎么修改成一个函数?
想修改成 CreateStringReg(HKEY hRoot,char *szSubKey,DWORD dwType, char* ValueName,char *Data) ,感觉reg_sz reg_dword 难住我了。大家快帮我。


//创建字符串型键值 
bool CreateStringReg(HKEY hRoot,char *szSubKey,char* ValueName,char *Data) 

HKEY hKey; 
long lRet = RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL); 
 if (lRet!=ERROR_SUCCESS) return false;

lRet=RegSetValueEx(hKey,ValueName,0,REG_SZ,(BYTE*)Data,strlen(Data)); 
if (lRet!=ERROR_SUCCESS) return false;

RegCloseKey(hKey); 


//创建DWORD型键值 
void CreateDWORDReg(HKEY hRoot , char *szSubKey , char *ValueName , DWORD Data) 

 HKEY hKey; 
long lRet = RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL); 
if(lRet != ERROR_SUCCESS) return;

 DWORD dwSize = sizeof(DWORD); 

lRet = RegSetValueEx(hKey,ValueName,0,REG_DWORD,(BYTE*)&Data,dwSize); 
if(lRet != ERROR_SUCCESS) return;

RegCloseKey(hKey); 



[解决办法]
再加一个参数标记是DWORD还是char*就可以了,比如0:DWORD;1:char*
[解决办法]
如果你就这两种键值的话,用一个bool就可以,否则就用个short。类似这样就可以了,注意你那个第二个函数的返回值也搞成返回bool的
bool CreateStringReg(HKEY hRoot,char *szSubKey,DWORD dwType, char* ValueName,char *Data ,bool bFlag)
{
    if (bFlag)
    {
        // CreateStringReg
    }
    else
    {
        // CreateDWORDReg
    }
}

[解决办法]
试试这样行不行,大概的意思:

//创建DWORD型键值  iFlag = 1: char;iFlag = -1 :DWORD
int CreateDWORDReg(HKEY hRoot , char *szSubKey , char *ValueName , int iFlag )  
{  
HKEY hKey;  
long lRet = RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL); 

if(lRet != ERROR_SUCCESS && iFlag == -1 ) 
{
return 1;
}
 
if(lRet != ERROR_SUCCESS && iFlag == 1 ) 
{
return 2;
}


DWORD dwSize = sizeof(DWORD);

if ( iFlag == -1 )
{
lRet = RegSetValueEx(hKey,ValueName,0,REG_DWORD,(BYTE*)&Data,dwSize);  
}
else if ( iFlag == 1 )
{
lRet=RegSetValueEx(hKey,ValueName,0,REG_SZ,(BYTE*)Data,strlen(Data)); 
}


if(lRet != ERROR_SUCCESS) return 0;  // 也可以同上面详细返回

RegCloseKey(hKey);  


至于变量Data,可以定义为全局变量,也可以放进参数中。
[解决办法]


bool WriteRegEx(HKEY hRoot, LPCTSTR szSubKey, LPCTSTR ValueName, DWORD dwType, char* szData, DWORD dwData)
{
HKEY  hKey; 
bool  Result = false;

if(RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL) != ERROR_SUCCESS)
return false; 
   
switch(dwType)

case REG_SZ: 
case REG_EXPAND_SZ:  
if(RegSetValueEx(hKey,ValueName,0,dwType,(LPBYTE)szData,strlen(szData)+1) == ERROR_SUCCESS)  
Result =true; 
break;
case REG_DWORD:
        if(RegSetValueEx(hKey,ValueName,0,dwType,(LPBYTE)&dwData,sizeof(DWORD)) == ERROR_SUCCESS)  
Result =true;  
break;
}


RegCloseKey(hKey);

return Result;
}

热点排行