图形(Graph32.ocx)剪辑

图形(Graph32.ocx)剪辑,graph,vb6,ocx,Graph,Vb6,Ocx,我有一个使用图形(GRAPH32.OCX)的VB6 SP6应用程序。只要Windows设置为经典主题,它就可以正常运行,但在任何其他模式下都会出现奇怪的缩放和剪裁,例如Windows XP上的Windows XP主题或Windows 7上的Aero主题 下面是它的样子: 我尝试了以下方法: 禁用我的应用程序的主题 设置与任何旧操作系统的兼容性 除了迁移到其他图表控件(如MSChart)之外,如何解决此问题?绘制图形的图形服务器(GSW32.exe)似乎也从其自己的进程获取设置。禁用GSW3

我有一个使用图形(GRAPH32.OCX)的VB6 SP6应用程序。只要Windows设置为经典主题,它就可以正常运行,但在任何其他模式下都会出现奇怪的缩放和剪裁,例如Windows XP上的Windows XP主题或Windows 7上的Aero主题

下面是它的样子:

我尝试了以下方法:

  • 禁用我的应用程序的主题
  • 设置与任何旧操作系统的兼容性

除了迁移到其他图表控件(如MSChart)之外,如何解决此问题?

绘制图形的图形服务器(GSW32.exe)似乎也从其自己的进程获取设置。禁用GSW32.exe的主题在WIndows XP上有所帮助。在Windows Vista和Windows 7上,还需要在自己的应用程序上禁用主题。后一种设置再次破坏了Windows XP,因此只需在Vista和7上进行设置

长文本,短故事:要由安装程序进行此设置,可以从以下InnoSetup命令派生

;Disable themes on graphics server
Root: HKLM32; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: String; ValueName: "{syswow64}\GSW32.exe"; ValueData: "DISABLETHEMES";
Root: HKLM64; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: String; ValueName: "{syswow64}\GSW32.exe"; ValueData: "DISABLETHEMES"; Check: IsWin64;
;Disable themes on own application, needed on Windows 7 only, must not be enabled on XP or Vista
Root: HKLM32; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: String; ValueName: "{app}\{#MyAppExeName}"; ValueData: "DISABLETHEMES"; MinVersion: 6.1.7600
Root: HKLM64; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: String; ValueName: "{app}\{#MyAppExeName}"; ValueData: "DISABLETHEMES"; MinVersion: 6.1.7600; Check: IsWin64;