C#_Office_Word_Com加载项 将Form窗体设置为Word文档的子窗体

2021/9/4 1:05:52

本文主要是介绍C#_Office_Word_Com加载项 将Form窗体设置为Word文档的子窗体,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在word Com加载项的时候,新建的Form窗体成为Word窗口的子窗体。

using System;
using Word = Microsoft.Office.Interop.Word;
using System.Runtime.InteropServices;

namespace TestWordAddin1
{
    public partial class ThisAddIn
    {

        /// <summary>
        /// 指定一个窗口的新父
        /// </summary>
        /// <param name="hWndChild">子窗口的句柄</param>
        /// <param name="hWndNewParent">新父窗口的句柄</param>
        /// <returns></returns>
        [DllImport("user32.dll", EntryPoint = "SetParent")]
        public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

        /// <summary>
        /// 获得活动窗口的句柄
        /// </summary>
        /// <returns></returns>

        [DllImport("user32.dll", EntryPoint = "GetActiveWindow")]
        public static extern int GetActiveWindow();





        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
        	//将Form窗体设置为Word窗口的子窗体
            SetNewParentWindow();
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        /// <summary>
        /// 将Form窗体设置为Word窗口的子窗体
        /// </summary>
        private void SetNewParentWindow()
        {
            //获取当前Word文档对象
            Word.Application wordapp = Globals.ThisAddIn.Application;
            
            //API函数返回Word窗口的句柄 (1)先获取Word窗体句柄
            int WordHwnd = GetActiveWindow();
            IntPtr wordHwnd = new IntPtr(WordHwnd);//转化

            //实例化Form窗口 (2)再获取Form窗口的句柄
            Form1 self = new Form1();
            self.Show();

            //通过API函数SetParent 设置父子窗体
            //SetParent(子窗体的句柄,父窗体的句柄)
            SetParent(self.Handle, wordHwnd);
        }

        #region VSTO 生成的代码

        /// <summary>
        /// 设计器支持所需的方法 - 不要修改
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }

        #endregion
    }
}

在这里插入图片描述

运行效果图:
在这里插入图片描述



这篇关于C#_Office_Word_Com加载项 将Form窗体设置为Word文档的子窗体的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程