• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# Generation.ClassBase类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中GtkSharp.Generation.ClassBase的典型用法代码示例。如果您正苦于以下问题:C# ClassBase类的具体用法?C# ClassBase怎么用?C# ClassBase使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ClassBase类属于GtkSharp.Generation命名空间,在下文中一共展示了ClassBase类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: VirtualMethod

		public VirtualMethod (XmlElement elem, ClassBase container_type) : base (elem, container_type)
		{
			this.elem = elem;
			retval = new ReturnValue (elem ["return-type"]);
			parms = new Parameters (elem["parameters"]);
			parms.HideData = true;
		}
开发者ID:ystk,项目名称:debian-gtk-sharp2,代码行数:7,代码来源:VirtualMethod.cs


示例2: Ctor

		public Ctor (XmlElement elem, ClassBase implementor) : base (elem, implementor)
		{
			preferred = elem.GetAttributeAsBoolean ("preferred");
			if (implementor is ObjectGen)
				needs_chaining = true;
			name = implementor.Name;
		}
开发者ID:liberostelios,项目名称:gtk-sharp,代码行数:7,代码来源:Ctor.cs


示例3: Ctor

		public Ctor (XmlElement elem, ClassBase implementor) : base (elem, implementor) 
		{
			if (elem.HasAttribute ("preferred"))
				preferred = true;
			if (implementor is ObjectGen)
				needs_chaining = true;
			name = implementor.Name;
		}
开发者ID:ystk,项目名称:debian-gtk-sharp2,代码行数:8,代码来源:Ctor.cs


示例4: GenerateCallback

		/* Creates a callback method which invokes the corresponding virtual method
		* @implementor is the class that implements the virtual method(e.g. the class that derives from an interface) or NULL if containing and declaring type are equal
		*/
		public void GenerateCallback (StreamWriter sw, ClassBase implementor)
		{
			if (!Validate ())
				return;

			string native_signature = "";
			if (!IsStatic) {
				native_signature += "IntPtr inst";
				if (parms.Count > 0)
					native_signature += ", ";
			}
			if (parms.Count > 0)
				native_signature += parms.ImportSignature;

			sw.WriteLine ("\t\t[UnmanagedFunctionPointer (CallingConvention.Cdecl)]");
			sw.WriteLine ("\t\tdelegate {0} {1}NativeDelegate ({2});", retval.ToNativeType, this.Name, native_signature);
			sw.WriteLine ();
			sw.WriteLine ("\t\tstatic {0} {1}_cb ({2})", retval.ToNativeType, this.Name, native_signature);
			sw.WriteLine ("\t\t{");
			string unconditional = call.Unconditional ("\t\t\t");
			if (unconditional.Length > 0)
				sw.WriteLine (unconditional);
			sw.WriteLine ("\t\t\ttry {");

			if (!this.IsStatic) {
				string type;
				if (implementor != null)
					type = implementor.QualifiedName;
				else if (this.container_type is InterfaceGen)
					type = this.container_type.Name + "Implementor"; // We are in an interface/adaptor, invoke the method in the implementor class
				else
					type = this.container_type.Name;

				sw.WriteLine ("\t\t\t\t{0} __obj = Gst.GLib.Object.GetObject (inst, false) as {0};", type);
			}

			sw.Write (call.Setup ("\t\t\t\t"));
			sw.Write ("\t\t\t\t");
			if (!retval.IsVoid)
				sw.Write (retval.CSType + " __result = ");
			if (!this.IsStatic)
				sw.Write ("__obj.");
			sw.WriteLine (this.CallString + ";");
			sw.Write (call.Finish ("\t\t\t\t"));
			if (!retval.IsVoid)
				sw.WriteLine ("\t\t\t\treturn " + retval.ToNative ("__result") + ";");

			bool fatal = parms.HasOutParam || !retval.IsVoid;
			sw.WriteLine ("\t\t\t} catch (Exception e) {");
			sw.WriteLine ("\t\t\t\tGst.GLib.ExceptionManager.RaiseUnhandledException (e, " + (fatal ? "true" : "false") + ");");
			if (fatal) {
				sw.WriteLine ("\t\t\t\t// NOTREACHED: above call does not return.");
				sw.WriteLine ("\t\t\t\tthrow e;");
			}
			sw.WriteLine ("\t\t\t}");
			sw.WriteLine ("\t\t}");
			sw.WriteLine ();
		}
开发者ID:jwzl,项目名称:ossbuild,代码行数:61,代码来源:VirtualMethod.cs


示例5: Signal

		public Signal (XmlElement elem, ClassBase container_type)
		{
			this.elem = elem;
			name = elem.GetAttribute ("name");
			marshaled = elem.GetAttribute ("manual") == "true";
			retval = new ReturnValue (elem ["return-type"]);
			parms = new Parameters (elem["parameters"]);
			this.container_type = container_type;
		}
开发者ID:rubenv,项目名称:tripod,代码行数:9,代码来源:Signal.cs


示例6: Method

		public Method (XmlElement elem, ClassBase container_type) : base (elem, container_type)
		{
			this.retval = new ReturnValue (elem["return-type"]);
			
			if (!container_type.IsDeprecated) {
				deprecated = elem.GetAttributeAsBoolean ("deprecated");
			}
			
			if (Name == "GetType")
				Name = "GetGType";
		}
开发者ID:liberostelios,项目名称:gtk-sharp,代码行数:11,代码来源:Method.cs


示例7: Method

		public Method (XmlElement elem, ClassBase container_type) : base (elem, container_type)
		{
			this.retval = new ReturnValue (elem["return-type"]);
			
			if (!container_type.IsDeprecated && elem.HasAttribute ("deprecated")) {
				string attr = elem.GetAttribute ("deprecated");
				deprecated = attr == "1" || attr == "true";
			}
			
			if (Name == "GetType")
				Name = "GetGType";
		}
开发者ID:rubenv,项目名称:tripod,代码行数:12,代码来源:Method.cs


示例8: MethodBase

 protected MethodBase(XmlElement elem, ClassBase container_type)
 {
     this.elem = elem;
     this.container_type = container_type;
     this.name = elem.GetAttribute ("name");
     parms = new Parameters (elem ["parameters"]);
     IsStatic = elem.GetAttribute ("shared") == "true";
     if (elem.HasAttribute ("new_flag"))
         mods = "new ";
     if (elem.HasAttribute ("accessibility")) {
         string attr = elem.GetAttribute ("accessibility");
         switch (attr) {
             case "public":
             case "protected":
             case "internal":
             case "private":
             case "protected internal":
                 protection = attr;
                 break;
         }
     }
 }
开发者ID:Dynalon,项目名称:clutter-sharp,代码行数:22,代码来源:MethodBase.cs


示例9: NeedNew

		private bool NeedNew (ClassBase implementor)
		{
			return elem.HasAttribute ("new_flag") ||
				(container_type != null && container_type.GetSignalRecursively (Name) != null) ||
				(implementor != null && implementor.GetSignalRecursively (Name) != null);
		}
开发者ID:rubenv,项目名称:tripod,代码行数:6,代码来源:Signal.cs


示例10: ChildProperty

		public ChildProperty (XmlElement elem, ClassBase container_type) : base (elem, container_type) {}
开发者ID:ystk,项目名称:debian-gtk-sharp2,代码行数:1,代码来源:ChildProperty.cs


示例11: GenVMDeclaration

		private void GenVMDeclaration (StreamWriter sw, ClassBase implementor)
		{
			VMSignature vmsig = new VMSignature (parms);
			sw.WriteLine ("\t\t[GLib.DefaultSignalHandler(Type=typeof(" + (implementor != null ? implementor.QualifiedName : container_type.QualifiedName) + "), ConnectionMethod=\"Override" + Name +"\")]");
			sw.Write ("\t\tprotected ");
			if (NeedNew (implementor))
				sw.Write ("new ");
			sw.WriteLine ("virtual {0} {1} ({2})", retval.CSType, "On" + Name, vmsig.ToString ());
		}
开发者ID:rubenv,项目名称:tripod,代码行数:9,代码来源:Signal.cs


示例12: GenChainVirtualMethod

		private void GenChainVirtualMethod (StreamWriter sw, ClassBase implementor)
		{
			GenVMDeclaration (sw, implementor);
			sw.WriteLine ("\t\t{");
			if (IsVoid)
				sw.WriteLine ("\t\t\tGLib.Value ret = GLib.Value.Empty;");
			else
				sw.WriteLine ("\t\t\tGLib.Value ret = new GLib.Value (" + ReturnGType + ");");

			sw.WriteLine ("\t\t\tGLib.ValueArray inst_and_params = new GLib.ValueArray (" + parms.Count + ");");
			sw.WriteLine ("\t\t\tGLib.Value[] vals = new GLib.Value [" + parms.Count + "];");
			sw.WriteLine ("\t\t\tvals [0] = new GLib.Value (this);");
			sw.WriteLine ("\t\t\tinst_and_params.Append (vals [0]);");
			string cleanup = "";
			for (int i = 1; i < parms.Count; i++) {
				Parameter p = parms [i];
				if (p.PassAs != "") {
					if (SymbolTable.Table.IsBoxed (p.CType)) {
						if (p.PassAs == "ref")
							sw.WriteLine ("\t\t\tvals [" + i + "] = new GLib.Value (" + p.Name + ");");
						else
							sw.WriteLine ("\t\t\tvals [" + i + "] = new GLib.Value ((GLib.GType)typeof (" + p.CSType + "));");
						cleanup += "\t\t\t" + p.Name + " = (" + p.CSType + ") vals [" + i + "];\n";
					} else {
						if (p.PassAs == "ref")
							sw.WriteLine ("\t\t\tIntPtr " + p.Name + "_ptr = GLib.Marshaller.StructureToPtrAlloc (" + p.Generatable.CallByName (p.Name) + ");");
						else
							sw.WriteLine ("\t\t\tIntPtr " + p.Name + "_ptr = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (" + p.MarshalType + ")));");

						sw.WriteLine ("\t\t\tvals [" + i + "] = new GLib.Value (" + p.Name + "_ptr);");
						cleanup += "\t\t\t" + p.Name + " = " + p.FromNative ("(" + p.MarshalType + ") Marshal.PtrToStructure (" + p.Name + "_ptr, typeof (" + p.MarshalType + "))") + ";\n";
						cleanup += "\t\t\tMarshal.FreeHGlobal (" + p.Name + "_ptr);\n";
					}
				} else if (p.IsLength && parms [i - 1].IsString)
					sw.WriteLine ("\t\t\tvals [" + i + "] = new GLib.Value (System.Text.Encoding.UTF8.GetByteCount (" + parms [i-1].Name + "));");
				else
					sw.WriteLine ("\t\t\tvals [" + i + "] = new GLib.Value (" + p.Name + ");");

				sw.WriteLine ("\t\t\tinst_and_params.Append (vals [" + i + "]);");
			}

			sw.WriteLine ("\t\t\tg_signal_chain_from_overridden (inst_and_params.ArrayPtr, ref ret);");
			if (cleanup != "")
				sw.WriteLine (cleanup);
			sw.WriteLine ("\t\t\tforeach (GLib.Value v in vals)");
			sw.WriteLine ("\t\t\t\tv.Dispose ();");
			if (!IsVoid) {
				IGeneratable igen = SymbolTable.Table [retval.CType];
				sw.WriteLine ("\t\t\t" + retval.CSType + " result = (" + (igen is EnumGen ? retval.CSType + ") (Enum" : retval.CSType) + ") ret;");
				sw.WriteLine ("\t\t\tret.Dispose ();");
				sw.WriteLine ("\t\t\treturn result;");
			}
			sw.WriteLine ("\t\t}\n");
		}
开发者ID:rubenv,项目名称:tripod,代码行数:54,代码来源:Signal.cs


示例13: Generate

		public void Generate (GenerationInfo gen_info, string indent, ClassBase implementor)
		{
			SymbolTable table = SymbolTable.Table;
			StreamWriter sw = gen_info.Writer;

			if (Hidden || (!Readable && !Writable))
				return;

			string modifiers = "";

			if (IsNew || (container_type.Parent != null && container_type.Parent.GetPropertyRecursively (Name) != null))
				modifiers = "new ";
			else if (implementor != null && implementor.Parent != null && implementor.Parent.GetPropertyRecursively (Name) != null)
				modifiers = "new ";

			string name = Name;
			if (name == container_type.Name) {
				name += "Prop";
			}
			string qpname = "\"" + CName + "\"";

			string v_type = "";
			if (table.IsInterface (CType)) {
				v_type = "(Gst.GLib.Object)";
			} else if (table.IsOpaque (CType)) {
				v_type = "(Gst.GLib.Opaque)";
			} else if (table.IsEnum (CType)) {
				v_type = "(Enum)";
			}

			GenerateImports (gen_info, indent);

			if (IsDeprecated ||
			    (Getter != null && Getter.IsDeprecated) ||
			    (Setter != null && Setter.IsDeprecated))
				sw.WriteLine (indent + "[Obsolete]");
			sw.WriteLine (indent + PropertyAttribute (qpname));
			sw.WriteLine (indent + "public " + modifiers + CSType + " " + name + " {");
			indent += "\t";

			if (Getter != null) {
				sw.Write(indent + "get ");
				Getter.GenerateBody(gen_info, implementor, "\t");
				sw.WriteLine();
			} else if (Readable) {
				sw.WriteLine(indent + "get {");
				sw.WriteLine(indent + "\tGst.GLib.Value val = " + RawGetter (qpname) + ";");
				if (table.IsOpaque (CType) || table.IsBoxed (CType)) {
					sw.WriteLine(indent + "\t" + CSType + " ret = (" + CSType + ") val;");
				} else if (table.IsInterface (CType)) {
					// Do we have to dispose the Gst.GLib.Object from the Gst.GLib.Value?
					sw.WriteLine (indent + "\t{0} ret = {0}Adapter.GetObject ((Gst.GLib.Object) val);", CSType);
				} else {
					sw.Write(indent + "\t" + CSType + " ret = ");
					sw.Write ("(" + CSType + ") ");
					if (v_type != "") {
						sw.Write(v_type + " ");
					}
					sw.WriteLine("val;");
				}

				sw.WriteLine(indent + "\tval.Dispose ();");
				sw.WriteLine(indent + "\treturn ret;");
				sw.WriteLine(indent + "}");
			}

			if (Setter != null) {
				sw.Write(indent + "set ");
				Setter.GenerateBody(gen_info, implementor, "\t");
				sw.WriteLine();
			} else if (Writable) {
				sw.WriteLine(indent + "set {");
				sw.Write(indent + "\tGst.GLib.Value val = ");
				if (table.IsBoxed (CType)) {
					sw.WriteLine("(Gst.GLib.Value) value;");
				} else if (table.IsOpaque (CType)) {
					sw.WriteLine("new Gst.GLib.Value(value, \"{0}\");", CType);
				} else {
					sw.Write("new Gst.GLib.Value(");
					if (v_type != "" && !(table.IsObject (CType) || table.IsInterface (CType) || table.IsOpaque (CType))) {
						sw.Write(v_type + " ");
					}
					sw.WriteLine("value);");
				}
				sw.WriteLine(indent + "\t" + RawSetter (qpname) + ";");
				sw.WriteLine(indent + "\tval.Dispose ();");
				sw.WriteLine(indent + "}");
			}

			sw.WriteLine(indent.Substring (1) + "}");
			sw.WriteLine();

			Statistics.PropCount++;
		}
开发者ID:jwzl,项目名称:ossbuild,代码行数:94,代码来源:Property.cs


示例14: GenerateMethodBody

 protected void GenerateMethodBody(StreamWriter sw, ClassBase implementor)
 {
     sw.WriteLine ("\t\t[GLib.DefaultSignalHandler(Type=typeof(" + (implementor != null ? implementor.QualifiedName : container_type.QualifiedName) + "), ConnectionMethod=\"Override" + this.Name +"\")]");
     sw.Write ("\t\t{0} ", this.Protection);
     if (this.modifiers != "")
         sw.Write ("{0} ", this.modifiers);
     sw.WriteLine ("virtual {0} On{1} ({2})", retval.CSType, this.Name, Signature.ToString ());
     sw.WriteLine ("\t\t{");
     sw.WriteLine ("\t\t\t{0}Internal{1} ({2});", retval.IsVoid ? "" : "return ", this.Name, Signature.GetCallString (false));
     sw.WriteLine ("\t\t}");
     sw.WriteLine ();
     // This method is to be invoked from existing VM implementations in the custom code
     sw.WriteLine ("\t\tprivate {0} Internal{1} ({2})", retval.CSType, this.Name, Signature.ToString ());
     sw.WriteLine ("\t\t{");
 }
开发者ID:Gravecorp,项目名称:gtk-sharp,代码行数:15,代码来源:GObjectVM.cs


示例15: GenEvent

		public void GenEvent (StreamWriter sw, ClassBase implementor, string target)
		{
			string args_type = IsEventHandler ? "" : ", typeof (" + EventArgsQualifiedName + ")";
			
			if (Marshaled) {
				GenCallback (sw);
				args_type = ", new " + DelegateName + "(" + CallbackName + ")";
			}

			sw.WriteLine("\t\t[GLib.Signal("+ CName + ")]");
			sw.Write("\t\tpublic ");
			if (NeedNew (implementor))
				sw.Write("new ");
			sw.WriteLine("event " + EventHandlerQualifiedName + " " + Name + " {");
			sw.WriteLine("\t\t\tadd {");
			sw.WriteLine("\t\t\t\tGLib.Signal sig = GLib.Signal.Lookup (" + target + ", " + CName + args_type + ");");
			sw.WriteLine("\t\t\t\tsig.AddDelegate (value);");
			sw.WriteLine("\t\t\t}");
			sw.WriteLine("\t\t\tremove {");
			sw.WriteLine("\t\t\t\tGLib.Signal sig = GLib.Signal.Lookup (" + target + ", " + CName + args_type + ");");
			sw.WriteLine("\t\t\t\tsig.RemoveDelegate (value);");
			sw.WriteLine("\t\t\t}");
			sw.WriteLine("\t\t}");
			sw.WriteLine();
		}
开发者ID:rubenv,项目名称:tripod,代码行数:25,代码来源:Signal.cs


示例16: GenerateBody

		public void GenerateBody (GenerationInfo gen_info, ClassBase implementor, string indent)
		{
			StreamWriter sw = gen_info.Writer;
			sw.WriteLine(" {");
			if (!IsStatic && implementor != null)
				implementor.Prepare (sw, indent + "\t\t\t");
			if (IsAccessor)
				Body.InitAccessor (sw, Signature, indent);
			Body.Initialize(gen_info, is_get, is_set, indent);

			if (HasWin32Utf8Variant) {
				if (!retval.IsVoid)
					sw.WriteLine(indent + "\t\t\t" + retval.MarshalType + " raw_ret;");
				sw.WriteLine(indent + "\t\t\t" + "if (Environment.OSVersion.Platform == PlatformID.Win32NT ||");
				sw.WriteLine(indent + "\t\t\t" + "    Environment.OSVersion.Platform == PlatformID.Win32S ||");
				sw.WriteLine(indent + "\t\t\t" + "    Environment.OSVersion.Platform == PlatformID.Win32Windows ||");
				sw.WriteLine(indent + "\t\t\t" + "    Environment.OSVersion.Platform == PlatformID.WinCE)");
				if (retval.IsVoid) {
					sw.WriteLine(indent + "\t\t\t\t" + CName + "_utf8" + call + ";");
					sw.WriteLine(indent + "\t\t\t" + "else");
					sw.WriteLine(indent + "\t\t\t\t" + CName + call + ";");
				} else {
					sw.WriteLine(indent + "\t\t\t\traw_ret = " + CName + "_utf8" + call + ";");
					sw.WriteLine(indent + "\t\t\t" + "else");
					sw.WriteLine(indent + "\t\t\t\traw_ret = " + CName + call + ";");
					sw.WriteLine(indent + "\t\t\t" + retval.CSType + " ret = " + retval.FromNative ("raw_ret") + ";");
				}
			} else {
				sw.Write(indent + "\t\t\t");
				if (retval.IsVoid)
					sw.WriteLine(CName + call + ";");
				else {
					sw.WriteLine(retval.MarshalType + " raw_ret = " + CName + call + ";");
					sw.WriteLine(indent + "\t\t\t" + retval.CSType + " ret = " + retval.FromNative ("raw_ret") + ";");
				}
			}

			if (!IsStatic && implementor != null)
				implementor.Finish (sw, indent + "\t\t\t");
			Body.Finish (sw, indent);
			Body.HandleException (sw, indent);

			if (is_get && Parameters.Count > 0) 
				sw.WriteLine (indent + "\t\t\treturn " + Parameters.AccessorName + ";");
			else if (!retval.IsVoid)
				sw.WriteLine (indent + "\t\t\treturn ret;");
			else if (IsAccessor)
				Body.FinishAccessor (sw, Signature, indent);

			sw.Write(indent + "\t\t}");
		}
开发者ID:ystk,项目名称:debian-gtk-sharp2,代码行数:51,代码来源:Method.cs


示例17: GenerateBody

        public void GenerateBody(GenerationInfo gen_info, ClassBase implementor, string indent)
        {
            StreamWriter sw = gen_info.Writer;
            sw.WriteLine(" {");
            if (!IsStatic && implementor != null)
                implementor.Prepare (sw, indent + "\t\t\t");
            if (IsAccessor)
                Body.InitAccessor (sw, Signature, indent);
            Body.Initialize(gen_info, is_get, is_set, indent);

            sw.Write(indent + "\t\t\t");
            if (retval.IsVoid)
                sw.WriteLine(CName + call + ";");
            else {
                sw.WriteLine(retval.MarshalType + " raw_ret = " + CName + call + ";");
                sw.WriteLine(indent + "\t\t\t" + retval.CSType + " ret = " + retval.FromNative ("raw_ret") + ";");
            }

            if (!IsStatic && implementor != null)
                implementor.Finish (sw, indent + "\t\t\t");
            Body.Finish (sw, indent);
            Body.HandleException (sw, indent);

            if (is_get && Parameters.Count > 0)
                sw.WriteLine (indent + "\t\t\treturn " + Parameters.AccessorName + ";");
            else if (!retval.IsVoid)
                sw.WriteLine (indent + "\t\t\treturn ret;");
            else if (IsAccessor)
                Body.FinishAccessor (sw, Signature, indent);

            sw.Write(indent + "\t\t}");
        }
开发者ID:Yetangitu,项目名称:f-spot,代码行数:32,代码来源:Method.cs


示例18: ObjectField

		public ObjectField (XmlElement elem, ClassBase container_type) : base (elem, container_type)
		{
			if (CType == "char*" || CType == "gchar*")
				ctype = "const-" + CType;
		}
开发者ID:liberostelios,项目名称:gtk-sharp,代码行数:5,代码来源:ObjectField.cs


示例19: GenSignals

        public void GenSignals(GenerationInfo gen_info, ClassBase implementor)
        {
            if (sigs == null)
                return;

            foreach (Signal sig in sigs.Values)
                sig.Generate (gen_info, implementor);
        }
开发者ID:nathansamson,项目名称:F-Spot-Album-Exporter,代码行数:8,代码来源:ClassBase.cs


示例20: Generate

		public void Generate (GenerationInfo gen_info, ClassBase implementor)
		{
			StreamWriter sw = gen_info.Writer;

			if (implementor == null)
				GenEventHandler (gen_info);

			GenDefaultHandlerDelegate (gen_info, implementor);
			if (gen_info.GlueEnabled && implementor == null && ClassFieldName.Length > 0)
				GenGlueVirtualMethod (gen_info);
			else
				GenChainVirtualMethod (sw, implementor);
			GenEvent (sw, implementor, "this");
			
			Statistics.SignalCount++;
		}
开发者ID:rubenv,项目名称:tripod,代码行数:16,代码来源:Signal.cs



注:本文中的GtkSharp.Generation.ClassBase类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# Generation.GenerationInfo类代码示例发布时间:2022-05-26
下一篇:
C# Gtk.Window类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap