CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  控件与界面

500分,求解activeskin相关问题

楼主blueshu(学习Oracle9i)2006-06-13 16:49:13 在 PowerBuilder / 控件与界面 提问

现有一函数  
  global   type   gf_setskinmenu   from   function_object  
  end   type  
   
  forward   prototypes  
  global   subroutine   gf_setskinmenu   (window   as_win,   menu   auo)  
  end   prototypes  
   
  global   subroutine   gf_setskinmenu   (window   as_win,   menu   auo);uo_skin   lole  
  ClassDefinition   lcd  
  long   i  
  For   i   =   1   To   UpperBound(as_win.Control)  
  If   as_win.Control[i].TypeOf()   =   OLECustomControl!   Then  
  lcd   =   as_win.Control[i].ClassDefinition  
  If   lcd.Name   =   "uo_skin"   Then  
  lole   =   as_win.Control[i]  
  Exit  
  End   If  
  End   If  
  Next  
  if   isvalid(lole)   and   isvalid(auo)then  
  lole.Object.ApplySkinByName(handle(auo),   "Frame")  
  end   if  
  end   subroutine  
   
   
  为何执行到lole.Object.ApplySkinByName(handle(auo),   "Frame")报错,  
  0x7800b834指令引用的内存0x00000000。该内存不能为"read"  
  另:各位的可视应用对象又是怎么应用皮肤的?  
  问题点数:100、回复次数:13Top

1 楼eastpond(东塘)回复于 2006-06-13 17:02:36 得分 0

只能帮你顶了  
  pb用skin不是很好,没有dw跟tab控件的skinTop

2 楼lzp_lrp(lzp)回复于 2006-06-13 17:15:05 得分 0

建议不要用换肤之类的东东,PB对其支持的不太好,经常出错  
   
  建议自己用PB本身的功能来做  
   
  如果你想解决你的这个问题,建议你用try试试Top

3 楼whchen(土龙)回复于 2006-06-14 08:23:36 得分 0

不用换肤。确实要用请买正版。Top

4 楼lovelihp(一年多的总结:光顶升不了星)回复于 2006-06-14 10:42:44 得分 0

没用过换肤之类的东西.Top

5 楼wangxichen() 喜之郎 : )回复于 2006-06-14 13:28:23 得分 0

控件注册了没有?Top

6 楼blueshu(学习Oracle9i)回复于 2006-06-14 17:11:36 得分 0

当然注册了,其它地方用都正常,现在就是解决动态控件的问题Top

7 楼liuzyl()回复于 2006-07-28 16:51:57 得分 0

我用activeskin也是出毛病     在客户端都不能用   郁闷Top

8 楼friendwaters(西门坡论坛 http://www.simpsoft.cn)回复于 2006-07-28 19:11:02 得分 0

没用过这东西Top

9 楼liuzyl()回复于 2006-07-28 21:00:11 得分 0

一般是   Activeskin   没有注册,如果是破解版的话   system文件夹下应该有2个文件     actskn43.ocx和actskn.oca     把这两个文件拷到目标机的d:盘   然后在dos下输入   d:\regsvc32.exe   actskn43.ocx   这样目标机的空间才注册成功  
   
   
  Top

10 楼ilyvmly(ilyvmly)回复于 2006-11-25 08:44:55 得分 0

这个问题我知道怎么回事,我刚就遇到了,试了好久才知道怎么回事。  
  原因是因为函数里面用了try,在有些机器上不能用try,具体解决办法是以代码方式打开该对象,你发现里面有两三个try,把它注释调就可以了,不影响整个函数作用。不信你试试,我就这样解决了。  
  如果有不祥请email,ilyvmly@163.comTop

11 楼ilyvmly(ilyvmly)回复于 2006-11-25 08:51:24 得分 0

到客户机只要带着皮肤文件和activeskin.dll(当然你可以是其他名,就是换肤函数的库编译结果,pbd也可以),还有actskn43.ocx(这个是注册时用的),你试着用Dllregister函数,如果不成功(我这里就不能用它本身函数注册),我还有其他办法,就是直接调用win本身的注册程序,做法是,首先用filecopy把actskn43.ocx拷贝到system32目录下(取得这个目录你会吧),然后用run(run(ls_sysdir+"\regsvr32.exe   /s   actskn43.ocx")),其中sysdir是system32的路径变量,/s   表示静态注册,不提示注册成功对话框。Top

12 楼ilyvmly(ilyvmly)回复于 2006-11-25 08:53:21 得分 0

注册完了,要换肤的窗口open中调用那个换肤的函数即可。我的整个换肤过程就这样。Top

13 楼myvicy(我来也!)回复于 2006-11-25 09:02:05 得分 0

用过这个东西,对tab和label还有菜单的支持不是很好。菜单要每次都点才弹出。  
  可以用API写自己的uo来实现换肤效果很好的。Top

相关问题

关键词

得分解答快速导航

  • 帖主:blueshu

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo