1
我在我的應用程序中使用擴展的RichTextBox控件來生成帶有嵌入式圖像的RTF文檔。我嵌入圖像作爲EMF圖元文件與{\pict\wmetafile8\picw[A]\pich[B]\picwgoal[C]\pichgoal[D]...
在Windows 8中使用mshedit.dll中的Richedit
在Windows XP SP1,Windows Vista和Windows 7中,正確生成的文件,我可以在我的文檔不僅看到圖像,但包含表中還包括圖像。
但是,在Windows 8中運行應用程序時,只有當它們不包含在表中時,才能看到嵌入的圖像。
我知道Windows 8使用RichEdit控件的新版本,並且我懷疑我的應用程序在msftedit.dll中沒有找到RICHEDIT50W,因此會回退到Windows 8爲了向後兼容而包含的舊版本。
這裏是我的擴展RichTextBox控件用於加載相應的庫代碼:
Private Shared Function LoadLibrary(ByVal lpFileName As String) As IntPtr
End Function
Protected Overrides ReadOnly Property CreateParams() As CreateParams
Get
Dim lResult As IntPtr = LoadLibrary("msftedit.dll")
If lResult = IntPtr.Zero Then
MessageBox.Show(Marshal.GetLastWin32Error().ToString())
End If
Dim cp As CreateParams = MyBase.CreateParams
cp.ClassName = "RICHEDIT50W"
Return cp
End Get
End Property
沒有捕魚周圍正確的價值,應該cp.ClassName
是別的東西在Windows 8加載適當的基本控制,或者是在表格中嵌入圖像在新的編輯器中丟失了什麼?
對於它的價值,我已經試過'RICHEDIT51W','RICHEDIT60W'和'RICHEDIT80W',所有這些都引發異常,當我嘗試發送messag e控制。 – MCattle
你可能想嘗試複製一個win7 dll,然後在你的應用程序中調用該dll。我已經做到了,它的工作。不要用win7替換你的system32 dll,只是將它拷貝到你的應用程序文件夾(bin \ debug)中,然後調用該dll來代替 – Rui
我可以這樣做,但我懷疑我可能會遇到分發/許可問題。 – MCattle