当TScrollBox内的TImage过大且TScrollBox本身Bound也较宽的时候会出现滚动条在滚动的时候明显延迟的情况,可能是由于我的绘图方式问题,现在是用GDI+通过TImage的handle直接绘图,另外不是在TImage的OnPaint里去重绘的,而是用了timer定时更新,因为我需要实现一些动画效果,现在尝试过将timer定时绘图的部分用一个TThread单开一个线程实现,但效果仍不是很理想。还尝试了一下根据TScrollBox的滚动条确定TImage的可视区域并用SetClip减掉没用的部分,最后也是稍微好了一点,当ScrollBox很大(整个窗口全屏的时候),拖动滚动条依然会有延迟,目前正在继续研究中……
K-Res
C++ Builder的__published关键字
Category
Keyword extensions
Syntax
__published:
Description
The __published keyword was added to support the VCL.
还是CB2007的gdiplus问题
上次加了STRICT后是不报歧义错误了,编译可以正常通过,但是在链接的时候会提示无法解析的符号,好像是implib的时候生成的lib不对的样子,最后检查了一下gdiplus.dll的版本号,发现当前系统的是5.1.3097.0(这个是有漏洞的版本),从m$网站上下载了最新的5.1.3102.1360(无漏洞)版本后,implib生成.lib,链接,没有问题了。
S60 v3 SDK调用链接了ESTLIB.DLL的dll后的exe不能正常运行
连续试了HSS(Hekkus Sound System)和Tuny 2个sound library,都是这个错误,运行后在加载dll时就出错,stack trace:
C++ Builder 2007用gdiplus时的一个问题
加了Gdiplus.h后,编译不能通过,提示[C++ Error] GdiplusGraphics.h(37): E2015 Ambiguity between ‘Gdiplus::Graphics::Graphics(void *)’ and ‘Gdiplus::Graphics::Graphics(void *,int)’
这个是CodeGear提到的一个已知问题:
Must Turn off NO_STRICT #define with GdiPlus library
The C++ library GdiPlus cannot be used in non STRICT mode, since it requires that Graphics::Graphics(HDC) be distinguishable from Graphics::Graphics(HWND). In non STRICT mode, both HWND and HDC are “void*”. Otherwise, you get the error:
[C++ Error] GdiplusGraphics.h(37): E2015 Ambiguity between ‘Gdiplus::Graphics::Graphics(void *)’ and ‘Gdiplus::Graphics::Graphics(void *,int)’
解决办法就是在Project->Options里的Paths and Defines的Conditional Defines里面加上STRICT,这样就开启了STRICT模式,那个歧义就可以消除了!
S60 2nd FP2 for MIDP SC版的mma好像有问题
只要用了mma的api模拟器就会报jes-0-java-mma@的错误,开始时一直以为自己的操作或设置有问题,后来发现nokia forum上有人问到了类似的问题,但是没有人回答,于是才意识到有可能是模拟器本身的问题,结果去nokia上下了个s60 2.1 SC版,发现程序跑起来就没问题了。(PS:epoc的MIDP模拟器实在是太爽了,中文字体大小位置都和真机一模一样,可惜就是速度慢的像蜗牛)
blog又挪地了
折腾了2天(有效折腾时间4小时)多,终于把blog从原来的csoft测试帐号搬到了正式帐号下,由于目录的变更导致了.htaccess里/mtview.php的路径错误,找了半天才发现这个问题,还麻烦了csoft tech部门的技术人员问了半天域名解析的问题,很快人家就帮忙把domain name的解析设好了,这服务真是好的一塌糊涂(发问到响应只有10分钟左右)。不容易啊,现在基本上搬家就算结束了……
关于nokia的s60模拟器的perference程序无法识别jre1.6的解决方法
当系统装了jre1.6版本的时候,运行s60模拟器(不管是MIDP还是Symbian C++的都会出问题),然后选perference,会弹出找不到jre1.4.1或later,而在details里面显示的确实已经找到的1.6,解决这个问题需要修改epoc32\tools\ecmt\config\config.properties文件,在里面对应版本号后面加上1.6就可以了。
给Together 2006 R2裝eclipse插件遇到的问题
插件装进去以后没反映,启动r2错误日志里也没有相关错误,最后发现原来需要删除configuration目录中除config.ini以外的其它文件,貌似原来eclipse装插件时也遇到过这种问题,失误了,还以为r2像Carbide.c++一样,T掉了很多eclipse默认的插件(比如jdt什么的),导致一些在eclipse里可以用的插件不能在这种eclipse里面用。
关于SWT画半透明时用gc的setAlpha
由于gc的setAlpha会自动打开Advanced模式,相当于调用了setAdvanced(true),而这项操作意味着需要调用native的gdiplus.dll的函数,所以发布的时候如果客户端没有这个dll,就会在setAlpha的时候出异常。