前几天学了VC——DB部分内容
现在与到以下困难求救.....//还请大家拉兄弟一拔
NUMBER 1 在一个DIALOG上的口令修改窗口RUN OK BUT 老是这个 ”无效的光标状态“
NUMBER 2 怎样把建立的类在VC中 ALL DEL 呢?
NUMBER 3 VC DB 中的CDbvariant varValue 是干什么用的
//QUSTION OVER
现在正直设计.......
还请大虾们出手相祝
现在与到以下困难求救.....//还请大家拉兄弟一拔
NUMBER 1 在一个DIALOG上的口令修改窗口RUN OK BUT 老是这个 ”无效的光标状态“
NUMBER 2 怎样把建立的类在VC中 ALL DEL 呢?
NUMBER 3 VC DB 中的CDbvariant varValue 是干什么用的
//QUSTION OVER
现在正直设计.......
还请大虾们出手相祝
NUMBER2 : FILE VIEW->DELETE .H .CPP
NUMBER3 : 处理各种类型的类
//number 3
可以再详细点吗?
_variant_t 和CDBVARIANT 一样用法
把_variant_t转为TCHAR*
BOOL CrackStrVariant(const _variant_t& var,TCHAR* pBufferRet)
{
TCHAR pBuffer[20480];
memset(pBuffer,0,sizeof(pBuffer));
memset(pBufferRet,0,sizeof(pBufferRet));
switch(var.vt)
{
case VT_EMPTY:
case VT_NULL:
case VT_DISPATCH:
case VT_VARIANT:
case VT_UI4:
case VT_I1:
case VT_UI2:
case VT_SAFEARRAY:
case VT_UNKNOWN:
case VT_UINT:
case VT_VOID:
case VT_I8:
case VT_HRESULT:
case VT_ERROR:
case VT_INT:
case VT_PTR:
case VT_UI8:
case VT_CARRAY:
case VT_USERDEFINED:
case VT_LPWSTR:
case VT_FILETIME:
case VT_BLOB:
case VT_LPSTR:
case VT_STREAM:
case VT_STORAGE:
case VT_STREAMED_OBJECT:
case VT_STORED_OBJECT:
case VT_BLOB_OBJECT:
case VT_CF:
case VT_CLSID:
break;
case VT_I2:
sprintf(pBuffer,"%hd",V_I2(&var));
break;
case VT_I4:
sprintf(pBuffer,"%d",V_I4(&var));
break;
case VT_R4:
sprintf(pBuffer,"%e",(double)V_R4(&var));
break;
case VT_R8:
sprintf(pBuffer,"%e",V_R8(&var));
break;
case VT_CY:
sprintf(pBuffer,"%s",COleCurrency(var).Format());
break;
case VT_DATE:
sprintf(pBuffer,"%s",COleDateTime(var).Format(_T("%m-%d-%y")));
break;
case VT_BSTR:
strcpy(pBuffer,(char*)V_BSTR( &var ));
// strRet = V_BSTR( &var );
break;
case VT_BOOL:
sprintf(pBuffer,"%s", (V_BOOL(&var) ? _T("TRUE") : _T("FALSE")));
case VT_UI1:
sprintf(pBuffer,"0x%02hX",(unsigned short)V_UI1(&var));
break;
default :
return FALSE;
}
if(sizeof(pBufferRet) < strlen(pBuffer))
{
return FALSE;
}
memcpy(pBufferRet,pBuffer,strlen(pBufferRet));
return TRUE;
}