Desktop application Windows GUI

I am building out my application on a Mac and will deploy on Mac and Windows for my clients. I have the GUI looking the way I want on Mac using the below code. Can anyone provide me with assistance on how to get a similar look on Windows? You’ll notice that I have a backdrop set in the main window, with a transparent container over the top. At very minimum I would like to get the containers to actually be transparent. Ideally, I can get the header bar similar to that of Mac as well.

#If TargetmacOS Then
  declare sub setStyleMask lib  "Cocoa" selector "setStyleMask:" (w as integer, s As integer)
  declare function styleMask lib "Cocoa" selector "styleMask" (w as integer) As integer
  
  //Yosemite only
  declare sub setTitlebarAppearsTransparent lib "Cocoa" selector "setTitlebarAppearsTransparent:" (windowHandle as integer, value as boolean)
  setTitlebarAppearsTransparent(Integer(self.Handle), true)
  
  //add NSFullSizeContentViewWindowMask
  setStyleMask(Integer(self.Handle), styleMask(Integer(self.Handle)) or 32768)
  
  const NSWindowTitleHidden = 1
  declare sub setTitleVisibility lib "Cocoa" selector "setTitleVisibility:" (windowHandle as Integer, value as Integer)
  setTitleVisibility(Integer(self.Handle),NSWindowTitleHidden)
#Endif


Welcome to the “cross platform” world of Xojo.

Our app looks the way we wanted on Win and Mac… version 1.0 released after 3 years of development…

… where 50% of the time was wasted developing custom controls for almost every control as Xojo’s controls and many 3rd party libraries offered / available are either limited, out-dated, discontinued, stuffed with bugs, result in massive over-head…

The problem you mention above though, is easily solved.

Ps what are you using for the sidebar?

1 Like

As it says in the documentation and countless posts in the forum, xojo cant handle transparency on windows and if you enable it xojo will have serious performance issues and visual glitches.

WHY? It is easier to have the backdrop in the container.

I was about to test it with a backdrop, but looks like the pile of bugs in xojo is bigger and bigger each release. No QA and not enough users to do a propper testing. https://tracker.xojo.com/xojoinc/xojo/-/issues/74602

Maybe you can work around that bug drawing the picture in the paint event.

As for the window, using declares to hide the title bar. :

Declare Function SetWindowLongW Lib "User32" (HWND As Integer, Index As Integer, NewLong As Integer) As Integer
Const GWL_STYLE = -16
Const WS_POPUP = &h80000000 
Call SetWindowLongW(Me.Handle, GWL_STYLE, WS_POPUP)

Hi Jordan… My company develops software for medical offices for many medical specialities, and we have Mac, Windows, Linux, Web and Mobile Apps, and we spend a lot of time trying to arribe to a look and feel similar in all platforms… I am attaching a PDF link with some views of our Apps (https://bmd.com.ar/archivos/bmdviews.pdf)… If you like it and if you need some help just tell me… In web we have to stop upgrading the IDE at release 2017 because there was a huge change on Web 1.0 to Web 2.0 and it was impossible for us to migrate and keep the views… I beleive that we had arrived to a quite good and nice look & feel

3 Likes

your screens between all the platforms are really nice looking and consistent !
congrats !
there is a huge amount of work there …