炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 10913|回复: 13

跟infoyun一起学用C#调用炫彩GUI - 入门第一例

[复制链接]

该用户从未签到

发表于 2013-4-14 18:53:49 | 显示全部楼层 |阅读模式
本帖最后由 infoyun 于 2013-4-14 21:32 编辑

infoyun自己写了一个例子,大家可以直接拷贝试用,下载试用前,请确保:
1、  你安装了vs2008
2、  你已经把炫彩的XCGUId.dll放到windows/system32下了
3、 建立了一个空的工程,里面有一个空的代码页
废话不多说,有码有真相:
using System;
using System.Runtime.InteropServices;
namespace XCGUIDLLCS
{
    //声明委托
    public delegate void ClickDelegate(IntPtr hEle, IntPtr hEventEle);
    public class XCGUIDLLd
    {
        //全局
        public class XCGlobal {
            //初始化炫彩
            [DllImport("XCGUId.dll", EntryPoint = "XInitXCGUI", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]//Cdecl
            public static extern int XInitXCGUI(string text);//C#中string 就是unicode的,直接代替炫彩wchar_t*;炫彩的BOOL是4个字节的,直接用int代替
            //运行炫彩
            [DllImport("XCGUId.dll", EntryPoint = "XRunXCGUI", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
            public static extern void XRunXCGUI();
            //消息盒子
            [DllImport("XCGUId.dll", EntryPoint = "XMessageBox", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
            public static extern int XMessageBox(IntPtr hXCGUI, string text, string caption, int type);        
        }
        //窗体
        public class XCWindow {
            //创建窗体
            [DllImport("XCGUId.dll", EntryPoint = "XWnd_CreateWindow", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
            public static extern IntPtr XWnd_CreateWindow(int i1, int i2, int i3, int i4, string text, int hWndParent, int style);//指针或句柄用IntPtr;炫彩NULL=0,为int
            //显示窗体
            [DllImport("XCGUId.dll", EntryPoint = "XWnd_ShowWindow", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
            public static extern int XWnd_ShowWindow(IntPtr hWindow, int nCmdShow);//又是个炫彩BOOL        
        }
        //按钮
        public class XCButton {
            //创建按钮
            [DllImport("XCGUId.dll", EntryPoint = "XBtn_Create", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
            public static extern IntPtr XBtn_Create(int x, int y, int cx, int cy, string title, IntPtr hParent);      
        }
        //基础元素
        public class XCElement {
            //注册事件
            [DllImport("XCGUId.dll", EntryPoint = "XEle_RegisterEvent", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
            public static extern void XEle_RegisterEvent(IntPtr hEle, int type, ClickDelegate pFun);      
        }
        //点击按钮发生的事件
        private static void myBtnClickEvent(IntPtr hEle, IntPtr hEventEle)
        {
            XCGlobal.XMessageBox(hEle, "你点了我", "提示", 2);
            
        }
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        
        [STAThread]
        static void Main()
        {
            XCGlobal.XInitXCGUI("hi");
            //创建窗口
            IntPtr hWindow = XCWindow.XWnd_CreateWindow(0, 0, 300, 200,"炫彩的世界",0,1791);
            if (!hWindow.Equals(IntPtr.Zero))
            {
                //创建按钮
                IntPtr hButton = XCButton.XBtn_Create(10, 10, 80, 25, "按钮", hWindow);
                //注册按钮点击时间
                XCElement.XEle_RegisterEvent(hButton, 0,myBtnClickEvent);//点击按钮事件
               
                //显示窗口
                XCWindow.XWnd_ShowWindow(hWindow, 5);
                //运行
                XCGlobal.XRunXCGUI();            
            }
        }
        
    }
}

最后上个效果图:

入门第一例

入门第一例

该用户从未签到

发表于 2013-4-14 21:06:56 | 显示全部楼层
占个位,

该用户从未签到

发表于 2013-4-14 21:07:52 | 显示全部楼层
支持一下。前排占座。。

该用户从未签到

发表于 2013-4-15 22:13:04 | 显示全部楼层
终于有教程了,太感谢了。%>_<%

该用户从未签到

发表于 2013-4-15 22:20:54 | 显示全部楼层
只是这样子会不会效率不高呀,请问下怎么调用画好的xml呢?

该用户从未签到

 楼主| 发表于 2013-4-15 23:39:44 | 显示全部楼层
致远 发表于 2013-4-15 22:20
只是这样子会不会效率不高呀,请问下怎么调用画好的xml呢?

你是说用C#调用炫彩库效率会不会不高吗?应该不会的,这是用的p/invoke ,就是platform-invoke,实际上是用的windows的系统函数~~~ 呵呵,调用画好的xml.....我还没有研究到那里呢~~~^_^,有个对个人来说比较大的工程要做,就是得把所有炫彩的调用接口用C#的interopservice封装一次~~~你也是在用C#吗?一起做这个事情不?

该用户从未签到

发表于 2013-4-16 00:46:27 | 显示全部楼层
infoyun 发表于 2013-4-15 23:39
你是说用C#调用炫彩库效率会不会不高吗?应该不会的,这是用的p/invoke ,就是platform-invoke,实际上是 ...

我第一次见到就被它给折服了,只是因为C#的例子很少就再没深入过了。希望你研究下怎么用xml配置文件一次生成界面。

该用户从未签到

 楼主| 发表于 2013-4-16 15:36:27 | 显示全部楼层
致远 发表于 2013-4-16 00:46
我第一次见到就被它给折服了,只是因为C#的例子很少就再没深入过了。希望你研究下怎么用xml配置文件一次 ...

呵呵,一定会去研究的,不过我得按自己的步骤啦,先研究炫彩本身~,再到使用工具配置,而且,如果把C#的封装接口做好了,你就可以自己研究xml配置啦~~~
  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2013-4-18 18:54:34 | 显示全部楼层
    可以发到教程版块去!

    该用户从未签到

    发表于 2013-4-27 21:40:42 | 显示全部楼层
    个人觉得炫彩在托管代码的利用上太麻烦,没必要
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

    GMT+8, 2024-3-28 19:33 , Processed in 0.080766 second(s), 21 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表