作者:勇敢的思竹 | 来源:互联网 | 2023-05-29 17:24
1、我在函数声中这样定义的
Function long FindWindowExA ( long hWnd, long hWndChild, string lpszClass, string lpszWindow) library "User32.dll" alias for "FindWindowExA;Ansi"
2、在调用时候,这样定义的函数
函数名of_gettoolbarhandle
返回值 :long
函数参数:aw_frame,参数类型:qindow
函数体:
long ll_NULL, ll_hwndToolBar
string ls_ClassName, ls_WindowName
Environment lEnv
IF IsValid( aw_Frame ) AND (GetEnvironment(lEnv) = 1) THEN
CHOOSE CASE lEnv.PBMajorRevision
CASE 6
ls_ClassName = "FNFIXEDBAR60"
case 8
ls_ClassName = "FNFIXEDBAR80"
case 7
ls_ClassName = "FNFIXEDBAR70"
case 9
ls_ClassName = "FNFIXEDBAR90"
case 10
ls_ClassName = "FNFIXEDBAR100"
END CHOOSE
SetNull(ls_WindowName)
SetNull(ll_NULL)
ll_hwndToolBar =FindWindowExW( Handle(aw_Frame), ll_NULL, ls_ClassName, ls_WindowName )
messagebox('ll_hwndToolBar',ll_hwndToolBar)
END IF
RETURN ll_hwndToolBar
3、调用of_gettoolbarhandle,在MDI窗体的OPEN中调用的 ,
ll_hwndToolBar = of_GetToolBarHandle( w_main)
4、问题:ll_hwndToolBar的返回值不对,总是0。请
大家帮忙看看。
8 个解决方案
用以下代码试试
ls_ClassName = "FNFIXEDBAR105"
SetNull(ls_WindowName)
SetNull(ll_NULL)
ll_hwndToolBar =FindWindowExW( Handle(aw_Frame), ll_NULL, ls_ClassName, ls_WindowName )
messagebox('ll_hwndToolBar',ll_hwndToolBar)
按照 lzp_lrp的代码试了下,还是不行。真不知道原因在哪?
ls_ClassName = "FNFIXEDBAR105"这句不要写到你的Case里
直接写我给你的代码,把case去掉
你最好单步跟踪一下
版主,我都试过了,都不好使,也挨个语句调试过。不明白啊 !
用spy++之类的测试确认一下状态条的类名再findwindowa
把解决方法告诉大家一下。
Function long FindWindowExW ( long hWnd, long hWndChild, string lpszClass, string lpszWindow) library "User32.dll" alias for "FindWindowExA;Ansi"
function long FN_ToolBarSetFont(long unknown,string fontname,long fontsize,long unknown1,string str) library "PBVM105.DLL" alias for "FN_ToolBarSetFont;Ansi"