zoukankan      html  css  js  c++  java
  • AutoCAD.net(一):更改AutoCAD窗口的标题和图标

        对AutoCAD二次开发方向的发展,是我为从事.net前就有的愿望,现在.net + ObjectARX 已经形成很完美的结合,遗憾的是目前国内关于.net对 ObjectARX 开发的资料太少。我会将自己的学习经验不断的与大家分享,希望关注。
    WinAPI的引用:
    public class WinAPI
    {
        
    #region  宏定义  
        public const int WM_SETICON = 0x80;
        
    public const int IMAGW_ICON = 1;
        
    public const int LR_LOADFROMFILE = 0x10;
        
    #endregion
        
        
    #region  WinAPI定义
        [DllImport(
    "User32.dll", EntryPoint = "SendMessage")]
        
    public static extern int SendMessage(
            
    int hWnd, // handle to destination window 
            int Msg, // message 
            int wParam, // first message parameter 
            int lParam // second message parameter 
        );
        
        [DllImport(
    "user32", EntryPoint = "LoadImage")]
        
    public static extern int LoadImageA(int hInst, string lpsz, int un1, int n1, int n2, int un2);

        [DllImport(
    "user32", EntryPoint = "SetWindowText")]
        
    public static extern int SetWindowTextA(int hwnd, string lpString);
        
    #endregion
    }

    using System;
    using System.IO;
    //using Microsoft.Win32;
    using System.Collections;
    using System.Windows.Forms;
    using System.Resources;

    using Autodesk.AutoCAD.ApplicationServices;
    using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;
    using Autodesk.AutoCAD.Colors;
    using Autodesk.AutoCAD.DatabaseServices;
    using Autodesk.AutoCAD.EditorInput;
    using Autodesk.AutoCAD.Geometry;
    using Autodesk.AutoCAD.Runtime;
    using Autodesk.AutoCAD.Windows;

    using Autodesk.AutoCAD.Interop;
    using Autodesk.AutoCAD.Interop.Common;
    using Autodesk.AutoCAD.Customization;

    public class AsdkClass1 : IExtensionApplication
    {
        
    #region 实现接口函数,完成初始化操作
        
    //要实现这个接口,你必须实现Initialize() 和Terminate()函数。
        /// <summary>
        
    /// 初始化操作
        
    /// </summary>
        public void Initialize()
        {
            
    //--------------------
            
    //AddContextMenu();
            
    //AddToolbar();
            
    //AddMenuBar();
            SetTitle();
            SetIcon();
            
    //--------------------
        }
        
    /// <summary>
        
    /// 清除操作
        
    /// </summary>
        public void Terminate()
        {      
        }
        
    #endregion    

        
    #region 更改AutoCAD窗口的标题和图标
        
    /// <summary>
        
    /// 更改AutoCAD窗口的标题名称
        
    /// </summary>
        private void SetTitle()
        {
            AcadApplication acadApp 
    = AcadApp.AcadApplication as AcadApplication;
            
    int AcadHwnd = acadApp.HWND;//获取AutoCAD应用程序的窗口句柄
            WinAPI.SetWindowTextA(AcadHwnd, "明信供电CAD 2.0");
        }

        
    /// <summary>
        
    /// 更改AutoCAD窗口的图标
        
    /// </summary>
        private void SetIcon()
        {
            AcadApplication acadApp 
    = AcadApp.AcadApplication as AcadApplication;
            
    int AcadHwnd = acadApp.HWND;//获取AutoCAD应用程序的窗口句柄
            string path = acadApp.Path;
            
    //从文件载入图标(16*16大小)
            string FileName = "G:\\cad.ico";
            
    if (File.Exists(FileName))
            {
                
    int hIcon = WinAPI.LoadImageA(0, FileName, WinAPI.IMAGW_ICON, 1616, WinAPI.LR_LOADFROMFILE);
                
    if (hIcon != 0)
                {
                    WinAPI.SendMessage(AcadHwnd, WinAPI.WM_SETICON, 
    0, hIcon);
                }
            }
        }
        
    #endregion
    }

    效果图:

  • 相关阅读:
    在Eclipse或者STS中使用SVN插件
    SVN的忽略、版本回退、版本冲突(window)
    SVN的图标集
    HTML5+NodeJs实现WebSocket即时通讯
    import和require的区别
    正则表达式 金额验证
    vue 弹窗弹窗禁止滑动的方法 看了网上很多方法 都是扯淡 直接贴上代码
    uni-app关于小程序及app端第三方微信登陆问题
    用 async/await 来处理异步
    微信小程序 子组件调用父组件方法
  • 原文地址:https://www.cnblogs.com/wf225/p/981311.html
Copyright © 2011-2022 走看看