• Welcome to PlanetSquires Forums.
 

WinFBX Version 1.0

Started by José Roca, November 21, 2017, 05:19:32 PM

Previous topic - Next topic

José Roca

After many release candidate versions, I think that it is time to release the first official version.

All the source code, including examples and templates, is hosted in GitHub:
https://github.com/JoseRoca/WinFBX

On-line documentation:
https://github.com/JoseRoca/WinFBX/tree/master/docs

23 Nov 2017
- Bug fix: Changed DIM vArgs(1 TO 15) AS VARIANT to DIM vArgs(1 TO 16) AS VARIANT in the
last overloaded Invoke function of the CDispInvoke class. Thanks to ganlinlao for reporting it.

15 Dec 2017  - Version 1.0.02
- Added the Resize method to the CWSTR class.
- Modified the AfxStrLSet, AfxStrRSet and AfxStCSet functions to work with Unicode.

19 Dec 2017  - Version 1.0.02
- Added the following functions:
      AfxGetBrowserHandle
      AfxGetInternetExplorerHandle
      AfxGetFireFoxHandle
      AfxGetGoogleChromeHandle

20 Dec 2017 - Version 1.0.02
- Added the following functions:
      AfxCWstrArrayAppend
      AfxCWstrArrayInsert
      AfxCWstrArrayRemove
      AfxCWstrArrayRemoveFirst
      AfxCWstrArrayRemoveLast
      AfxCWstrArraySort

30 Dec 2017 - Version 1.0.03
- Added two overloaded AfxStrExtract functions.

6 Jan 2018 - Version 1.0.03
- Added two overloaded AfxStrRemove functions.

11 May 2018 - Version 1.0.03
- Modified the AfxStrLSet, AfxStrRset and AfxStrCSet functions because they GPFed with
the 64 bit compiler.

26 May 2018 - Version 1.0.03
- Modified the internal code of several functions that used INSTR with CWSTR variables.

28 May 2018 - Version 1.0.03
- Modified the AfxOpenFileDialog and AfxSaveFileDialog functions because they GPFed with
the 64 bit compiler. Also changed an instruction in AfxOpenFileDialog that prevented to work
with non Latin alphabets.

31 May 2018 - Version 1.0.03
- Modified AfxOpenFileDialog again to check for double double null only if the flag
OFN_ALLOWMULTISELECT is used.
- Modified the FilepPath method of the CFindFile class to use the Root method instead of
the GetFullPathName API function.

16 Jun 2018 - Version 1.0.03
- Typo: LietView_GetTooltipsFont changed to ListView_GetTooltipsFont.

17 Jun 2018 - Version 1.0.03
- Modified CXpButton.inc to allow coloured buttons.

20 Jun 2018 - Version 1.0.03
- AfxGetWindowLocation: Changed parameters from AS LONG PTR to BYREF AS LONG.

22 Jun 2018 - Version 1.0.03
- AfxWin.inc: Added the function AfxCommand.

24 Jun 2018 - Version 1.0.03
- CWSTR.inc and CVAR.inc: Changed the casting from BYREF AS WSTRING to BYREF AS CONST WSTRING.

27 Jun 2018 - Version 1.0.03
- CXpButton: Added DPI awareness to the text and image margins.

29 Jun 2018 - Version 1.0.03
- Removed the 80 characters limitation to the AfxAddTooltip and AfxSetTooltipText functions.
- Added CONST to the string parameters of several procedures.

1 Jul 2018 - Version 1.0.03
- Modified CXpButton.inc to add properties.

2 Jul 2018 - Version 1.0.03
- CTextStream.inc: Added OpenForInputA / W, OpenForOutputA / W and OpenForAppendA / W methods.

4 Jul 2018 - Version 1.0.03
- CWSTR: Changed the [] operator from one-based index to zero-based index.

6 Jul 2018 - Version 1.0.03
- CWSTR: Changed CONSTRUCTOR (BYVAL nChars AS UINT, BYVAL nCodePage AS UINT)
to CONSTRUCTOR (BYVAL nChars AS UINT, BYVAL bClear AS BOOLEAN)
The nCodePage parameter was no longer useful and the new bClear parameter allows to specify
if the memory will be intialized (cleared) or not.
- The default constructor now initializes the memory.

10 Jul 2018 - Version 1.0.03
- CXputton: Added support for the BM_CLICK message.

29 Jul 2018 - Version 1.0.03
- CXputton: Added ButtonBkColorDown and BkBrushDown properties.




Paul Squires

Congratulations Jose! all your incredibly hard work has paid off.

I am in the last week of the sale of my house and move into my new condo. I have done a little bit of programming but not much over the past number of weeks. However, this weekend I will at least release a new version of WinFBE to include your Version 1 library code.

Awesome, way to go Jose, your library is the #1 FreeBasic Windows resource by far.
Paul Squires
PlanetSquires Software
WinFBE Editor and Visual Designer

James Fuller

Jose,
  Congratulations on the version 1.0 release!!
For new users (and those of us with bad memories) how did you, or better yet, how should we set up our computers (Which Fb downloads,updates,folder structure,etc) to work seamlessly with your massive framework?

James


David Warner

Well done Jose and thanks for all your efforts.

FYI, I just downloaded the GitHub files and noticed what appears to be a filename conflict between CVAR.inc and CVar.inc in the Afx folder when unzipping the master archive from https://github.com/JoseRoca/WinFBX/archive/master.zip onto my machine.

These files are listed in the following location...
https://github.com/JoseRoca/WinFBX/tree/master/Afx

José Roca

I have removed CVAR.inc, which is older. Apparently, GitHub is case sensitive and considers that CVAR.inc AND CVar.inc are different files. Thanks very much for reporting it.

ganlinlao

hi,jose
Congratulations on the version 1.0 release!!

There is a mistake in the indispinvoke.inc file

José Roca

Thanks for reporting it.I have modified the file.

José Roca

#7
FBPiano, based on PBPiano, public domain control originally written by Börje Hagsten in June 2016 for PowerBASIC.

Options:

ComboBox 1 shows available midi devices (usually 1).
ComboBox 2 shows a collection of 16 midi channels, but we usually only use channel 1 for normal play.
Note: Channel 10 is reserved for percussion sets, turning each key from D2# to D7# into an instrument.
Always on top - program stays topmost on screen.
Show Key text - show/hide computer keyboard key text.
Show Note text - show/hide piano key notes.

Effects:

Arrow left - decrease octave
Arrow right - increase octave
Arrow up - pitch bend up 
Arrow down - pitch bend down
Sustain on/off, for sustain (reverb) on played keys.
Sustain can cause eternal notes to for example string and brass instruments and should be used with care.
If eternal notes occur, just uncheck this checkbox.
On octave change, pressed notes are repeated for a nice replay effect.
Mouse controls Volume, Balance, Vibrato and Pitch bend.

Remarks: I have had problems to get it working properly. For no apparent reason, the octave setting was being sometimes reset to 0 after changing the instrument or playing notes, but could not be reproduced at will. It was alleatory. I have kept this version as CPiano_v01.inc to demonstrate the problem. In the current CPiano.inc file, I have declared the m_pk and m_hRgn arrays as global instead of as intance variables of the class. This solves the problem. Apparently, the use of arrays as instance variables must be used with caution.


ganlinlao

#8
hi,jose
1、 I found cdicobj.inc support newEnum method, maybe we can add a "foreach ... in" statement, only used in the collection class.
I would like to ask, iEnumVariant must manually support next, skip, reset method? Is this the difference between cdicobj and vb's collection?

2、 CDispInvoke.inc, why not increase the property set members, like put? We can use the wstring parameter or any ptr, so that we can use the afxstrsplit function to divide the parameter values into a one-dimensional safeArrary when receiving the parameter values using object.set ("method") = "cArg1, cArg2, cArg3, ..., cArgN" . Because I over-love object.put ("method") = value of this style.

thank you !

José Roca

Quote
2、 CDispInvoke.inc, why not increase the property set members, like put? We can use the wstring parameter or any ptr, so that we can use the afxstrsplit function to divide the parameter values into a one-dimensional safeArrary when receiving the parameter values using object.set ("method") = "cArg1, cArg2, cArg3, ..., cArgN" . Because I over-love object.put ("method") = value of this style.

Sorry, I don't understand what you mean. How are you going to pass several VARIANT parameters as a string?

José Roca

Quote
1、 I found cdicobj.inc support newEnum method, maybe we can add a "foreach ... in" statement, only used in the collection class.
I would like to ask, iEnumVariant must manually support next, skip, reset method? Is this the difference between cdicobj and vb's collection?

I have looked at the FreeBasic documentation for implementing iterators, but there is no way to pass a pointer to the enumerator.

However, you can enumerate the collection this way:


DIM pDic AS CDicObj

pDic.Add "a", "Athens"
pDic.Add "b", "Madrid"
pDic.Add "c", "Roma"

DIM cvKeys AS CVAR = pDic.Keys
FOR i AS LONG = cvKeys.GetLBound TO cvKeys.GetUBound
   DIM cvKey AS CVAR = cvKeys.GetVariantElem(i)
   print cvKey, pDic.Item(cvKey)
NEXT


ganlinlao

hi,jose

      Please forgive me constantly asking, I would like to ask, winFBX 1.0 help documentation will provide offline chm file? Because I and my friends want to translate help documentation into Chinese. Currently we just translate the help file for cWindowsRC29 into Chinese.

Thanks again for your great sacrifice, for everyone to bring more convenience

José Roca

I have uploaded a .chm help file in the first post.

ganlinlao

hi,jose

In the process of translating winFBX documents, I found that there is a mistake here


José Roca

Thanks very much for reporting it. I have modified it as follows:

point1

[in] Reference to a GpPoint structure that specifies the starting point of the gradient. The starting boundary line passes through the starting point.

point2

[in] Reference to a GpPoint structure that specifies the ending point of the gradient. The ending boundary line passes through the ending point.

color1

[in] An ARGB value that specifies the color at the starting boundary line of this linear gradient brush.

color2

[in] An ARGB value that specifies the color at the ending boundary line of this linear gradient brush.

rc

[in] Reference to a rectangle that specifies the starting and ending points of the gradient. The upper-left corner of the rectangle is the starting point. The lower-right corner is the ending point.