Monitor Resolution and Scale issues

Hi

Is there any way to deal with the different screen resolutions and scale that are common across today’s variety of Windows monitors and laptop screens.

We are having issues with the size and placement of different fields and text (prompts and entry/display fields) which seems to size appropriately at one resolution and scale but fall apart when a different resolution or scale is applied (regardless of any resizing methods we apply).

If we could be aware of which resolution and scale at runtime then we could scale our text accordingly.

Is there anything available that would provide and application-wide solution or a the very least a command we could use to get the monitor resolution and scale?

Thanks

  1. Develop your screen in Clarion Window designer in the smallest resolution you think your client has
  2. use standard Resize template
2 Likes

Use Mike Douglas’ winDPI fix template, standard resize templates and NeoFontResizer if needed. This should help you a bit.

1 Like

I could find the NeoFontResizer, but I could not find Mike Douglas’ winDPI fix template. Could you send a link to us? Thanks.

We have used the standard resize template. Maybe we should to try to reduce some controls in the screen and make it smaller if we could not find a way. Thanks for your help.

My suggestion is to always design with smallest screen in mind. I used to go with 1024x768, now I mostly start with 1366x768 / 100% scaling. Then resizers usually do their job.

Attached dpi fix from mikeduglas.

dpiAwareFix.tpl (4.3 KB)

3 Likes

To get resolution, you can use GetDeviceCaps. I’m not at my development machine for the code I use, but here’s the API https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-getdevicecaps

If you have users with multiple devices with different resolution, I found it helpful to include the screen resolution in the INI filename for saving the window resize info. That way, if the user opens with a small screen, they won’t be using the resize settings that were saved on a large screen.

3 Likes

I don’t know if this will help but,
Have you tried setting dpiAware in your manifest ?

1 Like

Thanks I have downloaded and installed the dpiAwareFix.tpl. I have added it to Global extensions but I could not add it to the procedure extensions. Should we just add it to the Global Extensions only?

I have installed NeoFontResizer template as well but I could find it when I try to add it to the Global Extensions. We are using Clarion 11.

Dpiaware goes to global and that’s it. When you compile the app, it will be actually aware of dpi scaling and act accordingly.

Neofont resizer needs to be added globally, then local eytension in the frame. Then you can add it to any other window procedure as local extension but you also first have to add window resizing extension from cw (the original extension that comes with cw).

I have registered NeoFontResizer
image

But I could not find it when I tried to add to Global extensions
image

Do you have any idea?

Are you using ABC templates in the app?

No, I use Clarion. Does it work for ABC only?

Yes, it’s ABC only. There is no Clarion version.

Thanks for you help.

Could you tell me what parameters I should pass to this function to get the resolution? Should I use my screen as the handle? The index is a number. Where could I find the number for the index?

Thanks for your help. I think the dipAwareFix will do the job. I have registered it and try use in the application.