请问如何动态加载OCX控件,并能设置属性、响应事件。 ocx也是com组件,用调用com组件的方法调用不就得了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以下是编程步骤:初始化COM库。 (Initialize)创建一个与活动桌面交互的COM对象,并取得IActiveDesktop接口。调用COM对象的GetWallpaper()方法。如果GetWallpaper()成功,则输出/显示墙纸文件名。释放接口(Release())。收回COM库(Uninitialize)。WCHAR wszWallpaper [MAX_PATH];CString strPath;HRESULT hr;IActiveDesktop* pIAD; // 1. 初始化COM库(让Windows加载DLLs)。通常是在程序的InitInstance()中调用 // CoInitialize ( NULL )或其它启动代码。MFC程序使用AfxOleInit()。 CoInitialize ( NULL ); // 2. 使用外壳提供的活动桌面组件对象类创建COM对象。 // 第四个参数通知COM需要什么接口(这里是IActiveDesktop). hr = CoCreateInstance ( CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**) &pIAD ); if ( SUCCEEDED(hr) ) { // 3. 如果COM对象被创建成功,则调用这个对象的GetWallpaper() 方法。 hr = pIAD->GetWallpaper ( wszWallpaper, MAX_PATH, 0 ); if ( SUCCEEDED(hr) ) { // 4. 如果 GetWallpaper() 成功,则输出它返回的文件名字。 // 注意这里使用wcout 来显示Unicode 串wszWallpaper. wcout 是 // Unicode 专用,功能与cout.相同。 wcout << L"Wallpaper path is:\n " << wszWallpaper << endl << endl; } else { cout << _T("GetWallpaper() failed.") << endl << endl; } // 5. 释放接口。 pIAD->Release(); } else { cout << _T("CoCreateInstance() failed.") << endl << endl; } // 6. 收回COM库。MFC 程序不用这一步,它自动完成。CoUninitialize(); 在这个例子中,输出/显示Unicode 串 wszWallpaper用的是std::wcout。 to snowglede(雪鹰):我还是没搞懂如何做,可能我太笨了,我对COM不太了解。能给出源码吗,谢谢!! 求教VC6和DDK集成的问题 mfc的对话框编辑器输出变量的问题 急,ADO在Oracle在创建表的问题 VS2005中的VC++不支持这个定义 const MAXLEN = 128; 打印预览到底怎么分页????在线等 菜鸟给大虾们送分了,看看我的问题是不是很菜啊? VC + informix + ADO的连接问题 关于API 消息处理 请指点FindResource函数 请教怎么制作图像识别与标记软件 如何使用CFile读取文件内容?望高手指点. 如何改变ListCtrl中的subItem地文字颜色,或是向其中添加图标
创建一个与活动桌面交互的COM对象,并取得IActiveDesktop接口。
调用COM对象的GetWallpaper()方法。
如果GetWallpaper()成功,则输出/显示墙纸文件名。
释放接口(Release())。
收回COM库(Uninitialize)。WCHAR wszWallpaper [MAX_PATH];
CString strPath;
HRESULT hr;
IActiveDesktop* pIAD; // 1. 初始化COM库(让Windows加载DLLs)。通常是在程序的InitInstance()中调用
// CoInitialize ( NULL )或其它启动代码。MFC程序使用AfxOleInit()。 CoInitialize ( NULL ); // 2. 使用外壳提供的活动桌面组件对象类创建COM对象。
// 第四个参数通知COM需要什么接口(这里是IActiveDesktop). hr = CoCreateInstance ( CLSID_ActiveDesktop,
NULL,
CLSCTX_INPROC_SERVER,
IID_IActiveDesktop,
(void**) &pIAD ); if ( SUCCEEDED(hr) )
{
// 3. 如果COM对象被创建成功,则调用这个对象的GetWallpaper() 方法。
hr = pIAD->GetWallpaper ( wszWallpaper, MAX_PATH, 0 ); if ( SUCCEEDED(hr) )
{
// 4. 如果 GetWallpaper() 成功,则输出它返回的文件名字。
// 注意这里使用wcout 来显示Unicode 串wszWallpaper. wcout 是
// Unicode 专用,功能与cout.相同。
wcout << L"Wallpaper path is:\n " << wszWallpaper << endl << endl;
}
else
{
cout << _T("GetWallpaper() failed.") << endl << endl;
} // 5. 释放接口。
pIAD->Release();
}
else
{
cout << _T("CoCreateInstance() failed.") << endl << endl;
} // 6. 收回COM库。MFC 程序不用这一步,它自动完成。
CoUninitialize();
在这个例子中,输出/显示Unicode 串 wszWallpaper用的是std::wcout。
我还是没搞懂如何做,可能我太笨了,我对COM不太了解。
能给出源码吗,谢谢!!