Message window - no buttons

Hi,
This one has go me chasing my tail.
New windows 11 pro workstation. only happening on this one workstation.
Clarion 11.1

Appp works, well.
But after a few minutes or a few hours all MESSAGE windows will show the buttons just fine. But then all of a sudden the BUTTONS + TEXT are gone. No pattern noticed.

Basic YES + NO buttons.
Press “Y” or “N” works, as if the buttons are “hidden”?
Any advice

Hi !

Check the number of GDI objects in the Windows registry for this computer. Some programs change it … or they specifically reduce it for their own purposes (see the Windows API).

If there is a leak of GDI objects, the application will not be able to create new controls in windows.

  Loc:GDI = GetReg(REG_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows','GDIProcessHandleQuota',Loc:TypeParam)

  If Loc:GDI < 65000
     PutReg(REG_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows','GDIProcessHandleQuota',0FDE9h,Loc:TypeParam)
  end
1 Like

Hi Genricke,
Thank you for the suggestion.

Current value in the registry on this workstation was 10000, not 65000.
Changes made. User informed.

Hoping this was it. :clap:

Are you hooking the Message and calling your own replacement? E.g. do you use the Cape Soft Message accessory?

Hi Carl,
No, not at all.

CASE Message('Sending Notification AGAIN?','Notification Status',ICON:Question,BUTTON:Yes+BUTTON:No,BUTTON:No,MSGMODE:SYSMODAL)
       OF BUTTON:No 
       OF BUTTON:Yes; Do SendWatiNow
END


Nope, Issue persists… :frowning:
Changing the registry did not help.

Sorry. But it’s still some kind of conflict between the application and the system components or the driver (primarily the graphics card). The process ccc.exe not running ?

Is it any different if you remove the SysModal flag from your parameters?

Hi Jeff,
Let me remove MSGMODE:SYSMODAL and revert.

The user has been informed, and she will let us know if it happens again.
Thank you for the suggestion.

IIRC that is a holdover from 16 bit Windows. In 32 bit that should do nothing as it’s not possible. The typical alternative is to make the window top-most. Best to remove it.

In Equates.clw you could change the value from (1) to (0) so if it is used in code it will have no value and no possible effect. Or comment out that line so it will report an error and make you fix the code.

Hello everyone,

Issue remain. :frowning:

This is an HP machine. “hp-prodesk-600-g6-small-form-factor-pc”
We also ran updates off all graphic drivers etc..

The user connects via RDP into the workstation. No physical screen attached, remote station.

Run Task Manager when the issue is occurring. Go to the Details tab and right-click on the column headers and choose “select columns”. Add Handles, Thread, User Object, GDI Objects.
See if your application or any other has really large numbers.

Check this MESSAGE( statement and if necessary, do a search through all your generated source code for the MESSAGE( statements and check that they all have the correct structure. (You might be able to use a regex to do this?)

I had a similar problem decades ago with a Clarion 6 app where I had one MESSAGE( statement where I had forgotten the Icon part of the statement and it would pop up a malformed message; if I remember correctly it was somewhat random?

Hello Everyone!
I did not used to much the AI, but tried to look for a solution to this problem, maybe might help:

Root Cause (Likely)
The issue is specific to Clarion’s use of Windows APIs for message boxes, especially when run on Windows 11 with newer GPUs or high DPI settings. Windows 11 introduced subtle rendering behavior changes around UI scaling, font fallback, and GPU acceleration — all of which Clarion 11.1 does not fully account for.

The fact that the app runs “fine” and then gradually loses MESSAGE box content points to:

Possibilities:

  1. DPI scaling + high resolution monitor — buttons disappear on MESSAGE boxes due to DPI-induced redraw issues.
  2. GPU driver conflict — especially with Intel integrated + NVIDIA dual-GPU laptops or workstations.
  3. Windows 11 rendering system bug — MESSAGE boxes may use non-client rendering affected by recent Windows changes.
  4. Font rendering corruption — some MESSAGE box elements use system fonts which can become “invisible” due to rendering bugs.
  5. Clarion runtime rendering bug — possibly due to older compiled RTL code not handling Windows 11 changes.

Fixes / Workarounds

Here are several tested solutions that have worked for others:

  1. Disable Hardware Graphics Acceleration (System-wide)
    Sometimes Windows hardware acceleration conflicts with Clarion’s GDI usage.

Steps:

  1. Right-click Desktop → Display Settings → Graphics Settings

  2. Scroll to “Hardware-accelerated GPU scheduling”

  3. Turn it OFF

  4. Restart the PC

  5. Run in Compatibility Mode

Run your Clarion EXE or IDE in compatibility mode:

  • Right-click your Clarion-generated EXE
  • Go to Properties → Compatibility
  • Check “Run this program in compatibility mode for Windows 10”
  • Also check “Disable fullscreen optimizations”
  • Save, and test again.
  1. Force GDI Scaling for High DPI

Clarion apps aren’t fully DPI-aware. You can enforce GDI scaling:

  • Right-click the EXE → Properties → Compatibility → Change high DPI settings
  • Under “High DPI scaling override”, check:
    • Override high DPI scaling behavior
    • Scaling performed by: System (Enhanced)

This usually restores proper MESSAGE box rendering on high-DPI displays.

  1. Check for GPU Driver Updates

If you’re on an Intel Arc, UHD, or NVIDIA RTX, update drivers directly from vendor (not via Windows Update).

  1. Rebuild with the Latest Clarion Runtime

Make sure you’re using the latest Clarion 11.1 build (13744 or newer) and fully rebuilt your app. If not:

  • Clean and rebuild the app
  • Ensure the CLARUNX.DLL you’re deploying matches your compiled version
  • Try statically linking instead of dynamic linking
  1. Try using Clarion’s MESSAGEBOX API Alternative

If you’re using Clarion’s MESSAGE() function, try using a custom message procedure with Clarion’s own window or MESSAGEBOX API call. You can define your own window for message boxes and avoid the runtime’s default rendering altogether.

  1. Test on Different Monitor / DPI Setup

This might be triggered by a multi-monitor setup where one monitor has 100% scaling and another has 150% or 175%.

Try:

  • Unplugging extra monitors
  • Setting DPI scaling to 100% system-wide
  • Restarting the system

It very well could be a manifest setting, depending on how dpiAwareness might be set up.

Hello,
Thank you for the suggestion.

We found one monitor had 125% scaling.

After resetting to 100%, the user has reported that MESSAGE box is behaving.

This user has 3 screens and uses RDP.

Hi,

Hmm :thinking: is there a solution to accommodate more / greater than 100% scaling for Clarion apps?

What’s your current manifest setting for DPIAwareness? and where are you setting that? IDE or Setupbuilder?

Look CapeSoft AnyFont …

Hello everyone,
A big thank you for all the advice and support.
Ok, confirmed, if scaling is anything but 100% then the MESSAGE windows are “ghosted”

Jeff, the IDE is used.

Also, I believe this is your DPI fix template that is also used.