www.dopod.cn-智能手机资源分享平台
诺基亚5220扩展功能设置攻略(手绘版)
8501
ppc数字智能手机i-mate 8501免费送 空中-Opera3.0手机浏览器免费下载
发新话题
打印

[编程] 如何开发高分程序?

如何开发高分程序?

我想编写一个程序,界面上有较多控件,
使用160×160显示不全,想使用320×320显示。

请问如何编写?
我是菜鸟,请详细说明。

[ 本帖最后由 网络孤客 于 2008-5-27 22:27 编辑 ]
对于非图形程序,直接按照160x160的设计就行了啊,不用做什么修改!
web:www.yzqsoft.com(失效...)
My Palm Products
[CoolDAs][FontHackV][SafeHackV][ZLPluginLunarClock]
但我想显示更多内容和件,用标准字体,感觉字体太大了。

或者如何使用更小的字体?
首先要测试该机器是否支持高分辨率,即测试高分函数库是否存在
PALM OS5的机器可以自动根据图片集里定义的分辨率选择合适的图片显示,而SONY CLIE OS4 系列的只能用其特定的HRDRAW函数了。
以sony clie os 4为例
AppStart 里加入

/* load the hi-res library */

                SonySysFtrSysInfoP sonySysFtrSysInfoP;
                Err error;

                if (errNone == FtrGet(sonySysFtrCreator, sonySysFtrNumSysInfoP,
                        (UInt32 *)&sonySysFtrSysInfoP))
                {
                        if (sonySysFtrSysInfoP->libr & sonySysFtrSysInfoLibrHR)
                        {
                                /* HR available */
                                error = SysLibFind(sonySysLibNameHR, &sonyHiResRefNum);
                                if (error == sysErrLibNotFound)
                                {
                                        /* couldn’t find lib */
                                        error = SysLibLoad(
                                                sysFileTLibrary, sonySysFileCHRLib, &sonyHiResRefNum);
                                }

                                //在这里设置320x320分辨率
                                if (!error)
                                {
                                        UInt32 width = 320, height = 320;
                                        HROpen(sonyHiResRefNum);
                                        HRWinScreenMode(
                                                sonyHiResRefNum, winScreenModeSet,
                                                &width, &height, NULL, NULL);
                                        HRClose(sonyHiResRefNum);
                                }
                        }
                }
        }
当然头文件里需要
extern UInt16 sonyHiResRefNum;

在cpp文件里还要加入

/* Sony CLIE SDK headers */
#include <SonyCLIE.h>
/* sonyHiResRefNum
* reference number of Sony Hi-Res Library */
UInt16 sonyHiResRefNum = sysInvalidRefNum;

这样才能取得下面函数的正确运行

void HRDrawBitmap(const DmResID resID, const Coord x, const Coord y);

可以定义这样一个函数
头文件内写入
void HRDrawBitmap(const DmResID resID, const Coord x, const Coord y);

在cpp里写
void HRDrawBitmap(const DmResID resID, const Coord x, const Coord y)
{
        MemHandle resH;
        BitmapType *bitmap;
        resH = DmGetResource (bitmapRsc, resID);
        bitmap = static_cast<BitmapType*>(MemHandleLock (resH));
        HRWinDrawBitmap(sonyHiResRefNum, bitmap, x, y);
        MemHandleUnlock (resH);
}

这样,每次要画图的时候,就可以直接调用这个函数,后面的参数分别是在资源中定义的图片的ID以及X,Y坐标,其中X,Y坐标为320x320,不同于绘制其他窗口时的160x160。

最后谨记,如果不是sony clie 的机型,可能导致错误或者死机。

[ 本帖最后由 Greenland 于 2008-6-7 19:37 编辑 ]
谢谢Greenland。我试试!
我更新太慢,呵
发新话题