windows下objective-c的cocoa框架编程,可以有图形界面哟

先配置windows下的objective-c的开发环境

http://ftpmain.gnustep.org/pub/gnustep/binaries/windows/下载下面几个包,注意版本,我现在试了一下这几个包结合在一起可以用,全用最新的话,可能会导致.dll缺失,运行时会有报错

gnustep-system-0.22.0-setup.exe

gnustep-core-0.22.0-setup.exe

gnustep-devel-1.0.0-setup.exe

gorm-1.2.8-setup.exe

ProjectCenter-0.5.0-setup.exe

从上到下依次安装

看见下图就说明linux模拟环境OK啦

 

然后试一下,当然先helloworld啦

1 #import
<Foundation/Foundation.h>
2 int main
(
int argc,char *argv[])
3 {
4     NSAutoreleasePool
*pool=[[NSAutoreleasePool alloc] init];
5     NSLog(@"Hello
World!"
);
6     [pool
drain];
7     return 0;
8 }

makefile,不懂的查资料,文件命名为GNUmakefile木有后缀

1 include
$(GNUSTEP_MAKEFILES)/common.make
2  
3 TOOL_NAME=HelloWorld
4 HelloWorld_OBJC_FILES=HelloWorld.m
5  
6 include
$(GNUSTEP_MAKEFILES)/tool.make

好了,之后就是这样的:

 

有的朋友就要惊了,说我骗人,木有图形界面,急吼吼神马呀,要急孙子都有了。。。。下面是动真格的了:

main.m

01 #include
"AppController.h"
02 #include
<AppKit/AppKit.h>
03  
04 int main(int argc, const char*argv[])
05 {
06    NSAutoreleasePool
*pool;
07    AppController
*delegate;
08     
09    pool
= [[NSAutoreleasePool alloc] init];
10    delegate
= [[AppController alloc] init];
11  
12    [NSApplication
sharedApplication];
13    [NSApp
setDelegate: delegate];
14  
15    RELEASE(pool);
16    return NSApplicationMain
(argc, argv);
17 }

 

AppController.h

01 #ifndef
_AppController_H_
02 #define
_AppController_H_
03  
04 #include
<Foundation/NSObject.h>
05  
06 @class NSWindow;
07 @class NSTextField;
08 @class NSNotification;
09  
10 @interface
AppController : NSObject
11 {
12    NSWindow
*window;
13    NSTextField
*label;
14 }
15  
16 -
(
void)applicationWillFinishLaunching:(NSNotification
*) not;
17 -
(
void)applicationDidFinishLaunching:(NSNotification
*) not;
18  
19 @end
20  
21 #endif
/* _AppController_H_ */

 

AppController.m

01 #include
"AppController.h"
02 #include
<AppKit/AppKit.h>
03  
04 @implementation
AppController
05 -
(
void)
applicationWillFinishLaunching: (NSNotification *) not
06 {
07    /*
Create Menu */
08    NSMenu
*menu;
09    NSMenu
*info;
10  
11    menu
= [NSMenu 
new];
12    [menu
addItemWithTitle: @
"Info"
13                    action:
NULL
14             keyEquivalent:
@
""];
15    [menu
addItemWithTitle: @
"Hide"
16                    action:
@selector(hide:)
17             keyEquivalent:
@
"h"];
18    [menu
addItemWithTitle: @
"Quit"
19                    action:
@selector(terminate:)
20             keyEquivalent:
@
"q"];
21  
22    info
= [NSMenu 
new];
23    [info
addItemWithTitle: @
"Info
Panel..."
24                    action:
@selector(orderFrontStandardInfoPanel:)
25             keyEquivalent:
@
""];
26    [info
addItemWithTitle: @
"Preferences"
27                    action:
NULL
28             keyEquivalent:
@
""];
29    [info
addItemWithTitle: @
"Help"
30                    action:
@selector (orderFrontHelpPanel:)
31             keyEquivalent:
@
"?"];
32  
33    [menu
setSubmenu: info
34             forItem:
[menu itemWithTitle:@
"Info"]];
35    RELEASE(info);
36  
37    [NSApp
setMainMenu:menu];
38    RELEASE(menu);
39  
40    /*
Create Window */
41    window
= [[NSWindow alloc] initWithContentRect: NSMakeRect(300, 300, 200, 100)
42                                         styleMask:
(NSTitledWindowMask |
43                                                     NSMiniaturizableWindowMask
|
44                                                     NSResizableWindowMask)
45                                           backing:
NSBackingStoreBuffered
46                                             defer:
YES];
47    [window
setTitle: @
"Hello
World"
];
48  
49    /*
Create Label */
50    label
= [[NSTextField alloc] initWithFrame: NSMakeRect(30, 30, 80, 30)];
51    [label
setSelectable: NO];
52    [label
setBezeled: NO];
53    [label
setDrawsBackground: NO];
54    [label
setStringValue: @
"Hello
World"
];
55  
56    [[window
contentView] addSubview: label];
57    RELEASE(label);
58 }
59  
60 -
(
void)
applicationDidFinishLaunching: (NSNotification *) not
61 {
62    [window
makeKeyAndOrderFront: self];
63 }
64  
65 -
(
void)
dealloc
66 {
67   RELEASE(window);
68   [super
dealloc];
69 }
70  
71 @end

helloworldInfo.plist

01 {
02    ApplicationDescription
"Hello
World Tutorial"
;
03    ApplicationIcon
"";
04    ApplicationName
= HelloWorld;
05    ApplicationRelease
= 0.1;
06    Authors
"";
07    Copyright
"Copyright
(C) 200x by ..."
;
08    CopyrightDescription
"Released
under..."
;
09    FullVersionID
= 0.1;
10    URL
"";
11 }

GNUmakefile

01 GNUSTEP_MAKEFILES=/GNUstep/System/Library/Makefiles
02  
03 include
$(GNUSTEP_MAKEFILES)/common.make
04  
05 APP_NAME
= HelloWorld
06 HelloWorld_HEADERS
= AppController.h
07 HelloWorld_OBJC_FILES
= main.m AppController.m
08 HelloWorld_RESOURCE_FILES
= HelloWorldInfo.plist
09  
10 include
$(GNUSTEP_MAKEFILES)/application.make

然后在shell里make一下,你应该懂的

效果,有图有真相:

当然你也可以选择直接用grom来可视化编程,这个要看英文文档啦,不要紧的,英文跟狗叫区别真的差不多,我家的狗只要我老婆喊它英文名,摇着尾巴就过去了,英文文档如下http://www.gnustep.org/experience/PierresDevTutorial/index.html

 当然uikit类库在windows下还是不能用,就是说ios开发不了,各位有钱的买mac没钱的黑苹果

时间: 2024-10-29 01:18:42

windows下objective-c的cocoa框架编程,可以有图形界面哟的相关文章

我在做windows下的蓝牙4.0通信编程,想买一个适配器,想问下对适配器有要求吗

问题描述 我在做windows下的蓝牙4.0通信编程,想买一个适配器,想问下对适配器有要求吗 还有程序是怎么与适配器联系的呀,初学,有过开发经验的大神帮帮我吧,急急急,拜托啦 解决方案 没什么要求,京东上30块钱的足够了.注意看清楚支持bluetooth4.0就可以.蓝牙的开发除了配对,其它和网络类似.很简单的.会有一个ip地址.不需要你额外的代码.

windows下安装nodejs及框架express_node.js

以下通过两种方式介绍windows下安装node.js及框架express 第一种方式: 总共分为四步轻松完成Nodejs的Express安装 第一步.安装 所有要先按装express-generator,否则创建项目时,会提示express命令没找到 npm install -g express-generator #需先安装express-generator npm install -g express express -V #验证是否安装成功 第二步.创建项目 $ express myfi

windows下VC界面 DIY系列1----写给想要写界面的C++程序员的话

        很早就想写关于C++ UI开发的一系列博文,博客专栏刚审核通过,就马上开始刷博文,不能辜负自己的一番热血,我并不是写界面的高手,只想通过写博文提高我自己的技术积累,也顺便帮助大家解决界面开发的瓶颈. 能来到这里看我写文章, 第一说明你是windows下开发的程序员! 第二你对漂亮软件界面开发感兴趣! 第三或许你也像我当初一样对C++软件界面开发 无所适从!或许我写的不专业,但是我只想让利用C++编写客户端界面的新手程序员们对C++界面开发没有误区 . 我是从windows开发出身

Windows下DLL编程技术及应用

摘 要: 本文介绍了DLL技术在Windows编程中的基本运用方法及应用,给出了直接内存访问及端口I/O的两个实用DLL的全部源代码. 关键词: DLL Windows编程 内存访问 I/O 一 .引 言 由于Windows为微机提供了前所未有的标准用户界面.图形处理能力和简单灵便的操作,绝大多数程序编制人员都已转向或正在转向Windows编程.在许多用户设计的实际应用系统的编程任务中,常常要实现软件对硬件资源和内存资源的访问,例如端口I/O.DMA.中断.直接内存访问等等 .若是编制DOS程序

编程-【求教】windows下如何提高WiFi扫描的频率,关于WlanScan函数的使用

问题描述 [求教]windows下如何提高WiFi扫描的频率,关于WlanScan函数的使用 在windows下编程控制无线网卡对AP进行扫描,该扫描频率应该如何提高,比如我想几十ms完成一次扫描:在windows的Native WiFi API文档中[wlanscan文档地址(https://msdn.microsoft.com/en-us/library/ms706783%28v=vs.85%29.aspx)],给出格式: DWORD WINAPI WlanScan(In HANDLE hC

windows下本地计算机有多个网络连接的情况怎么编程?

问题描述 windows下本地计算机有多个网络连接的情况怎么编程? 题目所述多个网络连接是指网络控制面板或任务管理器里面看到的本地连接1,2,3 这样的情况下怎样制定使用哪一个网络进行通信? 解决方案 这个底层的通讯你不用操心,操作系统会维护网关和路由,并且知道用什么网卡发数据.

wdf框架pci驱动-windows下wdf框架下pci驱动如何实现一驱多卡?

问题描述 windows下wdf框架下pci驱动如何实现一驱多卡? 请问我有多个PCI相同的设备插在了同一台主机上,可是只有一个设备功能正常. 请教我怎样修改驱动程序让它驱动多个相同设备呢?希望各位大虾提供些思路或代码,小弟是pci的初学者 解决方案 windows驱动之WDF---CharSample

c++-如何在windows下C++编程实现循环发送定长数据包?

问题描述 如何在windows下C++编程实现循环发送定长数据包? 为了对内部网络进行相关测试,所以要用C++编程实现一个循环发包程序,用QT平台进行开发,要发送的数据包都是同样大小,且大小由用户自行设置,用户设置的大小是整个数据包的大小,包括Ip头等等.所以想请问一下这个要用什么实现?rawsocket可以吗? 解决方案 http://www.cnblogs.com/shenck/p/4075141.html

关于windows下socket编程的recv函数

问题描述 关于windows下socket编程的recv函数 Talk is cheap,show me the code. do{ memset(buf, 0, BUFSIZ); strLen = recv(reads.fd_array[i], buf, BUFSIZ - 1, 0); if (strLen == 0 || strLen == -1){ FD_CLR(reads.fd_array[i], &reads); closesocket(cpyReads.fd_array[i]); p