2014-09-24 104 views
0

我有一個使用Graph(GRAPH32.OCX)的VB6 SP6應用程序。只要Windows設置爲經典主題,它就可以正常運行,但在其他任何模式下都會出現奇怪的縮放和裁剪。在Windows XP或Aero主題的Windows XP主題在Windows 7Graph(Graph32.ocx)剪輯

下面是它的樣子:

Clipped graph

我曾嘗試以下:

  • 禁用主題對於我的應用程序
  • 設置兼容性的任何舊操作系統

我怎麼能解決這個問題,除了遷移到其他圖表控制像MSChart?

回答

0

似乎繪製圖形的圖形服務器(GSW32.exe)也從它自己的進程中獲取設置。在Windows XP上禁用GSW32.exe的主題。此外,在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;