有人提供了一个函数,但编译时提示很多对象未定义。因为小弟对COM不是很明白,所以请大家帮忙看看还需要引用什么头文件,另外这个函数是否还需要改动
BOOL GetConnectString(TCHAR *lpszConnectString,HWND hWndParent){CComPtr<IDBPromptInitialize> pIDBPromptInitialize=NULL;CComPtr<IDBProperties > pIDBProperties = NULL;CComPtr<IDataInitialize> spDataInit=NULL;CComBSTR bstrConnectString;HRESULT hr;// Create an instance of the Data Links component.hr=CoCreateInstance(CLSID_DataLinks, NULL, CLSCTX_INPROC_SERVER,IID_IDBPromptInitialize, (void **)&pIDBPromptInitialize);if (FAILED(hr))return FALSE;// Prompt the user for the provider and initialization properties.hr=pIDBPromptInitialize->PromptDataSource(NULL, hWndParent,DBPROMPTOPTIONS_PROPERTYSHEET, 0, NULL, NULL, IID_IDBProperties,(IUnknown **)&pIDBProperties);if (FAILED(hr))return FALSE;hr = CoCreateInstance(CLSID_MSDAINITIALIZE, NULL, CLSCTX_INPROC_SERVER, IID_IDataInitialize, (void**)&spDataInit);if (FAILED(hr))return FALSE;hr=spDataInit->GetInitializationString(pIDBProperties,true,&bstrConnectString);if (FAILED(hr))return FALSE;
lstrcpy(lpszConnectString,(char*)_bstr_t(bstrConnectString));return TRUE;}
BOOL GetConnectString(TCHAR *lpszConnectString,HWND hWndParent){CComPtr<IDBPromptInitialize> pIDBPromptInitialize=NULL;CComPtr<IDBProperties > pIDBProperties = NULL;CComPtr<IDataInitialize> spDataInit=NULL;CComBSTR bstrConnectString;HRESULT hr;// Create an instance of the Data Links component.hr=CoCreateInstance(CLSID_DataLinks, NULL, CLSCTX_INPROC_SERVER,IID_IDBPromptInitialize, (void **)&pIDBPromptInitialize);if (FAILED(hr))return FALSE;// Prompt the user for the provider and initialization properties.hr=pIDBPromptInitialize->PromptDataSource(NULL, hWndParent,DBPROMPTOPTIONS_PROPERTYSHEET, 0, NULL, NULL, IID_IDBProperties,(IUnknown **)&pIDBProperties);if (FAILED(hr))return FALSE;hr = CoCreateInstance(CLSID_MSDAINITIALIZE, NULL, CLSCTX_INPROC_SERVER, IID_IDataInitialize, (void**)&spDataInit);if (FAILED(hr))return FALSE;hr=spDataInit->GetInitializationString(pIDBProperties,true,&bstrConnectString);if (FAILED(hr))return FALSE;
lstrcpy(lpszConnectString,(char*)_bstr_t(bstrConnectString));return TRUE;}
解决方案 »
- 子公司合同到期,不再续约,转交给总公司,是否要经济补偿
- ★☆★☆★有点难度的问题,大家进来看看,秀秀你们的功力★☆★☆★
- 如何得到弹出的CFileDialog下拉条中的文件后缀名
- 调用IADs::Get时,进程占用句柄数越来越多。。。。
- *** 有人在家吗? 参数引用问题, LPVOID参数 传递引用
- 谁能给我一个可以在网上显示realplayer, avi,mp3等媒体的控件
- 求助:如何隐藏命令窗口
- 我的vc为什么装不上?
- ***********VC数据库编程的问题!**********
- 如何使窗体的最大化按钮失效?如何使窗体不能被任意更改尺寸?
- 简单的关于宏的问题??
- 如何得到当前窗口的句柄
#include <oledb.h>
#include <msdasc.h>
#include <comutil.h>
if(SUCCEEDED(source.Open()))
{
CComBSTR bsConnection;
source.GetInitializationString(&bsConnection,true);
source.Close();
SetDlgItemText(IDC_DATABASE_CONNECTION,CString(bsConnection));//连接字符串
GetDlgItem(IDC_DATABASE_CONNECTION)->SetFocus();
}