• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 360分,自动化大侠眼球转过来,帮忙分析下一段VC操作Word的代码

360分,自动化大侠眼球转过来,帮忙分析下一段VC操作Word的代码

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 360分,自动化大侠眼球转过来,帮忙分析下一段VC操作Word的代码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 360分,自动化大侠眼球转过来,帮忙分析下一段VC操作Word的代码
描述:

本代码是更改自msdn上的一段代码,原码为打开word文档,我想创建一个word文档,然后往进写内容,Add方法报错:
代码如下(中间注释地方出错):
// Fotodocword.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <ole2.h>
// 
// AutoWrap() - Automation helper function...
// 
HRESULT AutoWrap(int autoType, VARIANT *pvResult, IDispatch *pDisp, 
      LPOLESTR ptName, int cArgs...) 
{
      // Begin variable-argument list...
      va_list marker;
      va_start(marker, cArgs);
      if(!pDisp) {
            MessageBox(NULL, "NULL IDispatch passed to AutoWrap()", 
                       "Error", 0x10010);
            _exit(0);
      }
      // Variables used...
      DISPPARAMS dp = { NULL, NULL, 0, 0 };
      DISPID dispidNamed = DISPID_PROPERTYPUT;
      DISPID dispID;
      HRESULT hr;
      char buf[200];
      char szName[200];
   
      // Convert down to ANSI
      WideCharToMultiByte(CP_ACP, 0, ptName, -1, szName, 256, NULL, NULL);
   
      // Get DISPID for name passed...
      hr = pDisp->GetIDsOfNames(IID_NULL, &ptName, 1, LOCALE_USER_DEFAULT, 
                                &dispID);
      if(FAILED(hr)) {
            sprintf(buf, 
                    "IDispatch::GetIDsOfNames(\"%s\") failed w/err0x%08lx",
                    szName, hr);
            MessageBox(NULL, buf, "AutoWrap()", 0x10010);
            _exit(0);
            return hr;
      }
   
      // Allocate memory for arguments...
      VARIANT *pArgs = new VARIANT[cArgs+1];
      // Extract arguments...
      for(int i=0; i<cArgs; i++) {
            pArgs[i] = va_arg(marker, VARIANT);
      }
   
      // Build DISPPARAMS
      dp.cArgs = cArgs;
      dp.rgvarg = pArgs;
   
      // Handle special-case for property-puts!
      if(autoType & DISPATCH_PROPERTYPUT) {
            dp.cNamedArgs = 1;
            dp.rgdispidNamedArgs = &dispidNamed;
      }
   
      // Make the call!
      hr = pDisp->Invoke(dispID, IID_NULL, LOCALE_SYSTEM_DEFAULT, autoType, 
                         &dp, pvResult, NULL, NULL);
      if(FAILED(hr)) {
            sprintf(buf,
                    "IDispatch::Invoke(\"%s\"=%08lx) failed w/err 0x%08lx", 
                    szName, dispID, hr);
            MessageBox(NULL, buf, "AutoWrap()", 0x10010);
            _exit(0);
            return hr;
      }
      // End variable-argument section...
      va_end(marker);
   
      delete [] pArgs;
   
      return hr;
}
int main(int argc, char* argv[])
{
      // Initialize COM for this thread...
      CoInitialize(NULL);
      // Get CLSID for Word.Application...
      CLSID clsid;
      HRESULT hr = CLSIDFromProgID(L"Word.Application", &clsid);
      if(FAILED(hr)) {
            ::MessageBox(NULL, "CLSIDFromProgID() failed", "Error", 
                         0x10010);
            return -1;
      }
      // Start Word and get IDispatch...
      IDispatch *pWordApp;
      hr = CoCreateInstance(clsid, NULL, CL

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 360分!我是菜鸟,但在赶一个项目,求高手几个NetMeetingSDKCOM方面的使用问题,就是使用COM的问题
  • 360分,自动化大侠眼球转过来,帮忙分析下一段VC操作Word的代码

相关文章

  • 2017-06-04 关于COM的字符串的问题,来者有分谢谢
  • 2017-06-04 WTL和GDI+
  • 2017-06-04 BHO插件IE7中多Tab引起崩溃,有高手遇到过么?如何解决?
  • 2017-06-05 在win32控制台程序中,怎么响应COM链接点事件。
  • 2017-06-04 COM容器的问题?
  • 2017-06-05 BSTRCSTRING之间的转换出面问题,求帮助(vc中)
  • 2017-06-05 暴急!!!高手们!!如何得到进程的真实句柄?
  • 2017-06-04 COM+的远程调用?在线等!在线给分(先给100,不够再加)。
  • 2017-06-04 webbrowser禁止网页被拖拽
  • 2017-06-05 MFC怎么在指定目录下创建一个指定名字的excel文件,怎么重新命名

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 在CRichEditView中是否有类似SetScrollSizes的功能?
    • 如何结束一个正在工作的工作线程
    • 莫名其妙的问题,请帮忙解决!在线等候
    • 工作线程发送消息的方法
    • 请教高手:VCMDI框架怎样调用DELPHI编的FORM(DLL)作为子窗口???
    • C++编出来的vsl库怎么使用?
    • 最近我做一个DCOM组件,关于系统配置问题。参与有分
    • 怎样让我的程序占用一定比率的CPU时间?(跪求高手指点)
    • 一个关于副线程向对话框窗口发送消息的问题。先以80分奉上,不够再加。
    • 请教自己写的一个activex控件显示空白的问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有