一个简单的createdispatch的问题,请帮忙!

夫人的泡泡鱼 2013-02-04 10:56:41
COleException e
...全文
218 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
夫人的泡泡鱼 2013-02-05
  • 打赏
  • 举报
回复
还有没有其他的办法了???
wyx100 2013-02-05
  • 打赏
  • 举报
回复
换个环境试试,,,
夫人的泡泡鱼 2013-02-05
  • 打赏
  • 举报
回复
我用MFC建立了基于对话框的应用程序,在第三步勾选了Automation,建立完成。 (1)我用类向导添加了_Application 。
class _Application : public COleDispatchDriver
{……}
(2)在对话框头文件中#include "msppt.h" (3)程序自动实现初始化。
BOOL CTestDlgApp::InitInstance()
{
	// Initialize OLE libraries
	if (!AfxOleInit())
	{
		AfxMessageBox(IDP_OLE_INIT_FAILED);
		return FALSE;
	}

	AfxEnableControlContainer();
……
}
(4)在按钮响应中,添加了CreateDispatch如下:
void CTestDlgDlg::OnBtnrun() 
{
	// TODO: Add your control notification handler code here
	_Application m_app;
	COleException e;
    if(!m_app.CreateDispatch(_T("Powerpoint.Application"),&e))
    {
	e.ReportError();
        AfxMessageBox("Couldn't start PowerPoint.");
    }
    else // Make PowerPoint visible and display a message
    {
        m_app.SetVisible(TRUE);
        TRACE("PowerPoint is Running!");
    }
}
编译成功,运行时点击按钮出错: e.ReportError();//报错“无效的类字符串” 我查了网上都是使用的这个类字符串的,怎么就是无效的呢? 我用的环境是:笔记本Y470 win7 VC6.0 office2007
傻X 2013-02-05
  • 打赏
  • 举报
回复
以前搞过的一篇Word的内容 链接
jimette 2013-02-05
  • 打赏
  • 举报
回复
void CTestView::OnBatterylife() 
{
   COleDispatchDriver disp;
   COleException *e = new COleException;
   
   try {
      // Create instance of Microsoft System Information Control 
      // by using ProgID.
      if (disp.CreateDispatch("SYSINFO.Sysinfo.1", e))
      {
         //Call BatteryLifePercent.     
         short nBatteryLifePercent;
         
         disp.InvokeHelper(0x03, DISPATCH_PROPERTYGET, VT_I2, 
            (void*)&nBatteryLifePercent, NULL);            

         if (nBatteryLifePercent == 255)
            AfxMessageBox("Battery Life % unknown");            
         else
         {
            CString cStr;
            cStr.Format("Battery Life is at %d%%",
                nBatteryLifePercent);
            AfxMessageBox(cStr);
         }
      }
      else
         throw e;

   }
   
   //Catch control-specific exceptions.
    catch (COleDispatchException * e) 
   {
      CString cStr;

      if (!e->m_strSource.IsEmpty())
         cStr = e->m_strSource + " - ";
      if (!e->m_strDescription.IsEmpty())
         cStr += e->m_strDescription;
      else
         cStr += "unknown error";

      AfxMessageBox(cStr, MB_OK, 
         (e->m_strHelpFile.IsEmpty())? 0:e->m_dwHelpContext);

      e->Delete();
   }
   //Catch all MFC exceptions, including COleExceptions.
   // OS exceptions will not be caught.
    catch (CException *e) 
   {
      TRACE("%s(%d): OLE Execption caught: SCODE = %x", 
         __FILE__, __LINE__, COleException::Process(e));
      e->Delete();
   }
}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧