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. 

   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.
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
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
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
		lul_hwnd = GetWindow(lul_hwnd, 2)
	End If

I use this workaround: 	IF Left(ls_name,6) = Left(is_classname,6) THEN ...
Windows 10 
Database Type:
Database Version: