大家帮我看看以下代码为什么返回值始终为0,hjd_cw()请进,谢谢!

tiantianpb 2002-10-09 09:19:13
//参数:
window awframe
//代码
long ll_null,ll_hstatusbar,ll_winhandle
string ls_classname,ls_windowname
environment lenv
if isvalid(awframe) and (getenvironment(lenv)=1) then
if (awframe.windowtype=mdihelp!) then
choose case lenv.pbmajorrevision
case 5
ls_classname="PB5_StatusClass"
case 6
ls_classname="PB6_StatusClass"
case 7
ls_classname="PB7_StatusClass"
case 8
ls_classname="PB5_StatusClass"
end choose
setnull(ls_windowname)
setnull(ll_null)
ll_winhandle=handle(awframe)
ll_hstatusbar=findwindowexA(ll_winhandle,ll_null,ls_classname,ls_windowname)
end if
end if
return ll_hstatusbar
...全文
109 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiantianpb 2002-10-09
  • 打赏
  • 举报
回复
up again!
tiantianpb 2002-10-09
  • 打赏
  • 举报
回复
to:balloonman2002() awframe是个参数的,调用时会给它付值的,我想查找mdi窗口的状态条的句柄的
balloonman2002 2002-10-09
  • 打赏
  • 举报
回复
ll_null的值可为0,也可为setnull(),:)
balloonman2002 2002-10-09
  • 打赏
  • 举报
回复
查看classname可用下列API:
Function ulong GetClassName(ulong hwnd,ref string lpClassName,ulong nMaxCount) LIBRARY "user32.dll" ALIAS FOR "GetClassNameA"

你想查子窗体的classname吗?
yaoyuan 2002-10-09
  • 打赏
  • 举报
回复
ll_null 的值因该置为0吧,setnull()因该不对的。
balloonman2002 2002-10-09
  • 打赏
  • 举报
回复
1.awframe这个WINDOW,你只声明了,但是没有给它赋值,在执行到if isvalid(awframe)肯定是无效的,会直接跳到return ll_hstatusbar的,:)
2.我试了一下即使能走到findwindowexA函数,里面的ls_classname好象也不正确,:),你想FIND什么东东?
tiantianpb 2002-10-09
  • 打赏
  • 举报
回复
to :jimly(一脚),我没有vc的,所以无法查看classname的,能帮我看看吗?
jimly 2002-10-09
  • 打赏
  • 举报
回复
用vc 的 spy 查一下classname,不同的pb版本稍有不同,很有规律。
tiantianpb 2002-10-09
  • 打赏
  • 举报
回复
case 8
ls_classname="PB8_StatusClass"
是笔误
wu_07 2002-10-09
  • 打赏
  • 举报
回复
case 8
ls_classname="PB5_StatusClass"
??????????????????????????????
xjl 2002-10-09
  • 打赏
  • 举报
回复
hjd_cw 2002-10-09
  • 打赏
  • 举报
回复

1.最好定义一个全局long型变量来存放frame 的句柄(而不是窗口变量),在frame的open 事件里赋值,在你的函数里的FindWinodwExA处引用该变量

2.
winy(winy)
balloonman2002()
的说法是正确的。frame里状态栏的classname 是 类似于

"FNHELP60"
"FNHELP70"
...
等的。
balloonman2002 2002-10-09
  • 打赏
  • 举报
回复
Constant Private String PB6_StatusClass= "FNHELP60"
Constant Private String PB5_StatusClass= "FNHELP050"

我手头有这个把下拉列表放到STATUSBAR的例子,代码为:
long llNULL, llhStatusBar
string lsClassName, lsWindowName
Environment lEnv

// Check the argument is a valid window, and get current environment settings
IF IsValid( awFrame ) AND (GetEnvironment(lEnv) = 1) THEN

// Check that this an MDI frame window with a standard statusbar
IF (awFrame.WindowType = MDIHelp!) THEN

// Set classname of statusbar based on PB version
CHOOSE CASE lEnv.PBMajorRevision
CASE 5
lsClassName = PB5_StatusClass
CASE 6
lsClassName = PB6_StatusClass
// Add code here for PB4 and PB7
END CHOOSE

// Get handle to statusbar
SetNull(lsWindowName)
SetNull(llNULL)
llhStatusBar = FindWindowEXA( Handle(awFrame), llNULL, lsClassName, lsWindowName )
END IF
END IF

RETURN llhStatusBar


关键是那两个常数定义:
Constant Private String PB6_StatusClass= "FNHELP60"
Constant Private String PB5_StatusClass= "FNHELP050"

:)

如需要我可发给你,:)
winy 2002-10-09
  • 打赏
  • 举报
回复
我得回家找呢 :(
记得csdn的大本营2000版pb专栏有一篇是用了类似的代码,把控件挂接到状态栏上。它那里就是按照PBx_StatusClass定义的,但实际上是“FNHELP050”、“FNHELP70”、“FNHELP80”…… 6.0和6.5后面好象是060、065还是65,记不清,要用SPY++查了。
我以前问过hjd_cw一个也是状态栏的问题,当时就给过他一份,他应该还有。他也是用PB7的
winy 2002-10-09
  • 打赏
  • 举报
回复
哦,ClassName是FNHELP70 :)
jimly 2002-10-09
  • 打赏
  • 举报
回复
classname:

PB8 PB9

Response窗口 FNWNS380
Popup窗口 FNm骺鏾嶹NS380
其他类型窗口 FNWND380 FNWND390
MDI窗口工具条 FNFIXEDBAR80 FNFIXEDBAR90
MDIHelp窗口微帮助 FNHELP80 FNHELP90
数据窗口 pbdw80 pbdw90
TREEVIEW PBTreeView32_80
Tab PBTabControl32_80
CommandButton Button
用户定义可视对象 FNUDO380


pb9的有些没试,应该差不多




hongqi162 2002-10-09
  • 打赏
  • 举报
回复
up!
tiantianpb 2002-10-09
  • 打赏
  • 举报
回复
to : winy(winy)
可以将您的代码贴出来看看吗?
tiantianpb 2002-10-09
  • 打赏
  • 举报
回复
to : winy(winy)
ll_winhandle=handle(awframe)
ll_winhandle确实有得到mdi主窗口的句柄吗?
另外,传递的awframe要确认是该状态栏的父窗口。
不会是函数声明的问题吧?//

ll_winhandle=handle(awframe)这个是没有错误的,我用的是pb7.0的
banalman 2002-10-09
  • 打赏
  • 举报
回复
up
加载更多回复(3)

1,076

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧