Some icons display differently VB6 - vb6

I have a VB6 application which is running under Windows 10 with admin rights. The application is made up of various things but the main form (frmMain) has several buttons with icons on it. Each of the icon files used is a 32x32 ico file and the majority display as they have always done. I am finding though that about 40% are showing differently - mainly quite big and blocky. I can't figure out any difference in the properties of the buttons they are associated or the files so why do some change and some don't?

Maybe your icons use a different color depth or if they are loaded at runtime they are stored in different ImageLists?

Related

Why do standard applications show slightliy different colors

I uploaded a simple png file with a overall fill color here: https://ufile.io/kx1mopq2
If i view this file in the windows explorer or in firefox the color displayed is slightly different than the color shown in Windows Paint, Paint 3d or several other applications i tested - including WinApi and Qt applications i developed myself.
In the screenshot below on the left you see firefox and windows explorer preview - we think that this display color is the correct one. On the right you see Pant and paint 3d. I modified the file in paint as i moved a strip from the left views into the right views in order to make the difference visible.
My question is: Where do these differences have their origin? I want my applications to show the same color as FireFox or Windows Explorer. It seems that there is a application setting or the like that influences that?
Any suggestion welcome.

Set a window as destop background (Windows)

is there any way to place a window behind the desktop icons or as the backgroud of the desktop?
For example I have a window and I want it to always in the back and below the destop icons.
No. Background is background, and is controlled by Windows itself, mostly through theme engine. You can put at best a slideshow - changing wallpaper roughly through API is not so smooth and often produces a flash, while slideshow use transition effects.
It was possible to display web pages in older Windows versions (it was named "Active Desktop"), but it's long dead now because of obvious security reasons.
Otherwise, everything you can create with an application will be ABOVE desktop icons. By design.
You can anyway use some programs that can somewhat perform suitable behavior:
SysInternals BgInfo: Allow to display various informations as an overlay to current wallpaper. Can display various system informations. Can also save you from creating some purely static display components for next tool.
Rainmeter: Allow to heavily customize your desktop with skins and "widgets" - they are still above icons, so see next one.
Desktop Restore: Allow to save/restore icons' positions for multiple configurations / resolutions. Can allow you to let Rainmeters' components in "blank" zones, free of icons.

Why does a Lazarus form look 'incorrectly different' on Windows

I create my programs on Ubuntu 12.04 and compile them on Windows (when necessary).
Recently I noticed that my Lazarus projects look different on Ubuntu and Windows. The problem is on Windows XP, 7 and 8. I'm not sure if Vista looks the same.
For example, group boxes containing radio buttons look shrunk in height, thus hiding parts of the components.
Now I have to edit this forms on Windows before compiling for those platforms. What's worse is that when I bring these project back to Ubuntu, the forms looks unnecessarily stretched out (in height).
Is there a solution to this?
Thanks!
It is easily to check if the controls themselves have the same height(just query their left and top properties and dump it in a memo or log for verification)
If that is ok, it is probably the font. Default fonts are subject to themes, and sometimes readability/disability settings.
Consistent cross-platform look is not a trivial task and does not come at no-cost.
Read http://wiki.freepascal.org/Autosize_/_Layout, especially the part that can scale controls on your form depending on the font size that the end user has configured in the Control Panels
Read few chapters from Google: "windows dpi aware applications"

visual studio designer dpi setting

I've learn how to manage different DPI settings the hard way, so that at runtime my applications are properly displayed.
But there is still a big issue with Design time Visual Studio.
Say I build an application at 96 dpi and I switch my display to 120 dpi for testing purposes.
Now IF I open a form designer at 120 dpi, the form is resized according to 125%, the controls moved aso! :-(((
So I try to avoid reopening forms, but that's NOT a nice solution, isn't it?
Is there by any chance a design time setting to prevent form to resize?
Not a solution but possibly a workaround: do not test on your computer but on a VM or other computer and do not open the solution on a computer with big fonts.
And we found that we cannot use the AutoScaleMode = Dpi.Font setting. That will randomly resize forms when we open them in the designer. Dpi or None seem to work.
Although this question is already old, I want to share my workaround.
Keep the Form’s AutoScaleMode = Font. This works fine, if you control the rest correctly.
Set in your Forms Designer: Font = MS Sans; 11px. Basically, specify your Fonts in Pixel, instead of Points. So Visual Studio won't re-scale anything if the system's DPI change.
In the Forms Ctor, after InitializeComponent, re-set: Font = SystemFonts.DefaultFont. Now, at run time, Fonts will use Point-based sizes again, and you get nice high-DPI GUI.
Enable DPI-Awareness, either through a manifest or by API function SetProcessDPIAwareness
You can find the details of my (hard) learning trail on my Blog: http://www.sgrottel.de/?p=1581&lang=en

For the same screen resolution and DPI settings, Can the pixels for a IDE control change between two OSes?

Assume a GUI application is opened on three machines running Windows XP, Windows Vista and Windows7. In all the three machines, the screen resolution and the DPI settings are set to be the same value. Will there be a difference in the way the application is displayed on the screen in terms of number of pixels used and their position on the screen?
The reason for asking this question is:
I am using position based record-and-play method for GUI automation. Any change in the position of a control can impact the playback of the GUI recording. I want to be sure that a recording captured on Windowx XP platform works on Vista and Windows7 platforms.
Yes. The OS chrome (starting with window borders and titles) have different styles (e.g. Vista and Win7 will likely have Aero on and thus translucent title).
And that's before considering any OS dependent code in the application.
The menu bars will probably all be different sizes, so you'll probably need to record separately on all three machines.
Bearing in mind, that each user could have any number of accessibility settings on/off, any DPI setting, and also that features such as button sizes and window border sizes are different on each of these OS's...
No one here could possibly guarantee you'll be fine - the only way is to test.
A side note: there MUST be a better way than position based playback? I've used tools previously that can read screen text and base the automated navigation on that, which seems far more sensible, but still horribly flawed.

Resources