我刚刚在我的Windows XP机器上安装了GNUstep,我正在尝试从命令行编译以下Objective-C Hello World程序:
#import <Foundation/Foundation.h>
int main(int argc, const char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Hello world\n");
[pool drain];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试从命令行编译程序时,如此
gcc hello.m -o hello
Run Code Online (Sandbox Code Playgroud)
我最终得到以下错误
hello.m:1:34: Foundation/Foundation.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我需要做些什么来通知编译器标准Objective-C库的位置?
我已经想出如何使用NSBezierPath类在我的自定义视图类的drawRect函数中绘制形状,但我似乎无法弄清楚如何绘制文本.下面的代码是我到目前为止绘制文本(位于drawRect函数中):
NSText *text = [NSText new];
[text setTextColor: [NSColor yellowColor]];
[text setText: @"Hello!"];
Run Code Online (Sandbox Code Playgroud)
我猜我可能需要提供一个NSRect或NSPoint来告诉NSText对象在哪里绘制自己,但我在Cocoa文档中找不到有关如何执行此操作的任何内容.
使用Objective-C/Cocoa如何根据特定字体计算绘制字符串所需的宽度和高度?在C#/ .Net中你可以这样做:
SizeF textSize = graphics.MeasureString(someString, someFont);
Run Code Online (Sandbox Code Playgroud)
Objective-C/Cocoa中是否有类似的东西?
这些天用Visual C#(特别是Visual C#2008),似乎menustrips和菜单的默认颜色是蓝色,这对我来说看起来很奇怪,是我真的想要覆盖的东西.我猜测Visual Studio正在从我选择的系统主题或其他东西中获取这种蓝色,但是我的系统上运行的其他Windows应用程序都没有这种蓝色,所以我不知道为什么我的.NET应用程序必须拥有它.;)
无论如何,我注意到如果我使用较旧版本的Visual Studio(Visual Studio.NET)创建应用程序,则menustrips和菜单的默认背景颜色是您期望看到的标准灰色.这是我想的问题的一个解决方案,但它看起来像一个愚蠢的,我真的想找到一种方法来覆盖当前版本的Visual C#中.