Questions? Feedback?powered byOlark live chat software

Standard Support

Bug 1961

Microhelp classname FNHELP is not following major-minor version 13 December, 2018

Knut Lading
06 December, 2018
Product: PowerBuilder Category: Controls & UI
Version: 2017 R3 Publishing: Public
Status: Analyzing Priority: P3
Classification: Resolution:
Chris Pollach 13 December, 2018
Hi Knut;

  FYI: In checking with Engineering - they do not change the minor version for MicroHelp bar Class in the MDI Frame between "revisions". 

Regards ... Chris
Knut Lading 07 December, 2018
w_status_bar.png (7KB)

We have a MDI frame window with microhelp (WindowType: mdihelp!). In the open-event of the frame we open a child-window: w_status_bar, and this status-bar fits inside the microhelp-field, but we position this status-bar to the right-side of the mid-frame. 
We use this status-bar to show various type of info to the user. 

Functions: 
   GetWindow() - gets the mdi-window handler
   GetClassName() - get the name of the object inside the mdi-window
   SetParent() - sets the parent to w_status_bar, and this should be the microhelp-handler

It is the GetClassName that returns "FNHELP170" in PB 2017 R3. Previous versions of PB was naming the class as "name<major><minor". The minor number for R3 is 2.

If there is another way to display info to the right-side of the microhelp-field, then we have to look at that. But the advantage of using our own w_status_bar is great. We have 5 different pieces of information that we show in the status-bar.
Knut
Chris Pollach 06 December, 2018
PB IDE Help under HH.exe
Chris Pollach 06 December, 2018
Hi Knut;

  Appeon PB uses a different help mechanism than Sybase or SAP used. The help is now run under the O/S's "HH.exe" HyperText Help utility (see attached). 

  What are you trying to accomplish with the FNHelp?

Regards ... Chris
Knut Lading 06 December, 2018
*Phenomenon:
Using funcion GetClassName from user32.dll to get the handler to microhelp-class FNHELP. Earlier versions of powerbuilder named the class using major-minor version in the classname, like FNHELP125. In the R3 release the expected name should be FNHELP172, but the function GetClassName returns FNHELP170.


*Reproduce Steps:
See example https://github.com/sebkirche/pbdebugger/blob/master/tools.pbl-dump/w_cw_statusbar.srw
I have not testet it, but it use the same functionality to set the is_classname:
is_classname = "FNHELP" + &
		String(le_env.PBMajorRevision) + String(le_env.pbminorrevision)

and use is_classname to check if microhelp is found:
// find the microhelp handle
lul_hwnd = GetWindow(Handle( iw_parent ), 5)
DO UNTIL lul_hwnd = 0
	ls_name = Space(25)
	li_rc = GetClassName(lul_hwnd, ls_name, Len(ls_name))
	If ls_name = is_classname Then
		lul_hwnd = SetParent(Handle(this), lul_hwnd)
		lul_hwnd = 0
	Else
		lul_hwnd = GetWindow(lul_hwnd, 2)
	End If
LOOP

Remark:
I use this workaround: 	IF Left(ls_name,6) = Left(is_classname,6) THEN ...
OS:
Windows 10 
Platform:
64-bit 
Database Type:
 
Database Version: