我们有代码来获取c#的类名
// Get Window class
var windowClass = new StringBuilder(256);
Win32.GetClassName((IntPtr) hwnd, windowClass, windowClass.Capacity);
String windowClassName = windowClass.ToString();
如何在目标c中转换它?
答案 0 :(得分:2)
简短回答:该代码没有Mac版本,因为在Mac上,窗口在这个意义上没有“类名”。您要问的是Mac没有的Windows API详细信息。
Anoop Vaidya的回答对于“class”的Objective-C含义是正确的,但不是Windows对“window class”的含义。
Here's what a window class in Windows looks like.窗口类定义了很多东西;这里只是其中一些:
lpfnWndProc
:指向窗口过程的指针。您必须使用CallWindowProc
函数来调用窗口过程。有关详细信息,请参阅WindowProc
。⋮
hIcon
:类图标的句柄。该成员必须是图标资源的句柄。如果此成员为NULL
,则系统会提供默认图标。hCursor
:类游标的句柄。该成员必须是游标资源的句柄。如果此成员为NULL
,则只要鼠标移动到应用程序窗口,应用程序就必须显式设置光标形状。hbrBackground
:类背景画笔的句柄。 [关于那一个的很多细节]lpszMenuName
:指向以null结尾的字符串的指针,该字符串指定类菜单的资源名称,名称显示在资源文件中。如果使用整数来标识菜单,请使用MAKEINTRESOURCE
宏。如果此成员为NULL
,则属于此类的窗口没有默认菜单。hIconSm
:与窗口类关联的小图标的句柄。如果此成员为NULL
,系统将搜索hIcon
成员指定的图标资源,以获取适当大小的图标,以用作小图标。
这与Objective-C类完全不同。
一个类(作为Objective-C使用该术语)是一个对象的配方。该类定义该类的任何对象拥有的实例变量(成员),属性和方法。每个对象都有一个与之关联的类; Objective-C意义上的类不是特定于窗口对象的。
相比之下,Windows中的“窗口类”定义了许多特定于窗口的属性。让我们看一下上面的内容,看看他们的Mac等价物是什么:
backgroundColor
属性,它接受一个NSColor对象。反过来,NSColor提供了许多预定义的背景颜色,用作窗口背景(以及其他用途)。mainMenu
的内容来自行完成。主窗口改变了。“窗口类”的大多数其他成员都是更多没有Objective-C等效的Windows API细节。
你应该阅读Apple的OS X Human Interface Guidelines。 Windows和Mac之间的窗口(以及其他功能)之间的工作方式有很多不同,这些界面选择可以让整个API设计一直向下。
答案 1 :(得分:1)
NSString *className = [objectName className];
这将为您提供名为objectName的对象的类名。
类似地,您传递对象,并获取类名。