高手坐镇(18)

编程学堂

如何开发iPhone软件

题目难度:★★★

读者来信:现在手机编程很火,我非常感兴趣,我想知道如何开发iPhone软件,给我一些思路吧!谢谢啦!

程序员 张让:开发iPhone软件跟开发其他手机平台的软件有一些区别,最大的不同是语言有一定的限制,要熟悉Objective-C语言,这个不熟悉要开发iPhone软件就困难重重。如果解决了语言问题,剩下的就好办了,下载安装iPhone SDK,搭建开发环境,再想好创意即可开发了。但是,最重要的就是创意,这个你要多花费一些心思。

此外,你最好准备一款iPhone手机。虽然有相关的模拟器,但光有模拟器还不够,还需要在真机上测试一下,避免软件出现问题。你多动手试试吧,可以从模仿设计其他软件入手。祝你好运!

C语言修正水仙花数代码

题目难度:★★

读者来信:前不久,同学编写了一段水仙花数代码,总感觉有问题,要我一起参考。我的编程水平也很有限,不过我知道你们那里有高手,特来请教一下。

程序员 故乡的云:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身,例如1^3 + 5^3 + 3^3 = 153,这个是基础编程知识之一。你们的代码错在循环设置不当。正确代码如下所示:

for (i=1;c>10 ;++i) { //注意循环设置

c=n/a;

a=a*10;

}

printf("i=%d,a=%d \n",i,a);

for (j=1;a>=10 ;++j)

{

s[j]=n/(a/10);

n=n-s[j]*(a/10);

a=a/10;

Delphi集合大量软件快捷方式

题目难度:★★★★

读者来信:我喜欢编程,喜欢模仿设计一些有创意的程序。最近我看了一些Web OS,我有一个想法,能不能设计一个程序,将很多软件的快捷方式装入里面,在该程序中点击快捷方式就可以启动相应的软件。我希望《电脑报》高手有空研究一下,一起交流。谢谢!

程序员 故乡的云:要做Web OS难度较高,但如果仅仅是做一个简单的软件快捷方式集合程序,就简单多了。我有两个思路,思路1是做一个类似QQ的窗体,把常用软件的快捷方式放在窗体中,平时窗体隐藏,需要时显示窗体;思路2是把集合程序隐藏在系统托盘中,平时窗体隐藏,需要时通过右键菜单来显示窗体。

下面,我写一个思路2的示例代码(以Delphi为例)。启动Delphi,在主窗体中添加几个Button(每个Button实现一个可执行文件的启动),添加一个ADOConnection(读取数据库),一个PopupMenu1(右键菜单)。

在项目文件夹下新建一个data.mdb数据库,根据实际需要增加几张表,并把数据写入表中(要求:数据不多且不需经常变动),在窗体创建时建立窗体和数据库的连接,编写各个按钮的代码。代码如下:

if ADOCN.ConnectionString<>'' then

begin

ADOCN.Connected:=False;

ADOCN.ConnectionString:='';

end;

ADOCN.ConnectionString := 'Data Source=' + ExtractFilePath(Application.ExeName) + 'data.mdb';

ADOCN.Connected:=True;

然后就是将程序加入系统托盘。关键代码如下所示(完整代码下载地址:http://www.icpcw.com/bzsoft):

lpData := new(PNotifyIconDataA);

lpData.cbSize := 88; ////指定ntida的长度

lpData.Wnd := Form1.Handle; // //取应用程序主窗体的句柄

lpData.hIcon := Application.Icon.handle; //指定系统状态栏显示应用程序的图标句柄

lpData.uCallbackMessage := WM_BARICON;

lpData.uID :=0; //用户自定义的一个数值,在uCallbackMessage参数指定的消息中使用

lpData.szTip := '我的工具集'; //'实现系统托盘图标!';

lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; //在结构中uCallbackMessage、hIcon和szTip参数都有效

Shell_NotifyIcon(NIM_ADD,lpData); //在系统状态栏中增加一个新图标

dispose(lpData);

procedure TForm1.WMBarIcon(var Message:TMessage);