2013-06-04 39 views
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加載適當的基本控制,或者是在表格中嵌入圖像在新的編輯器中丟失了什麼?

+0

對於它的價值,我已經試過'RICHEDIT51W','RICHEDIT60W'和'RICHEDIT80W',所有這些都引發異常,當我嘗試發送messag e控制。 – MCattle

+0

你可能想嘗試複製一個win7 dll,然後在你的應用程序中調用該dll。我已經做到了,它的工作。不要用win7替換你的system32 dll,只是將它拷貝到你的應用程序文件夾(bin \ debug)中,然後調用該dll來代替 – Rui

+0

我可以這樣做,但我懷疑我可能會遇到分發/許可問題。 – MCattle

回答

1
  • 打開寫字板
  • 打開間諜++(通常與VS捆紮)
  • 按下Ctrl + F(或點擊搜索)
  • 拖放從搜索窗口上寫字板
  • 的富文本控制靶心
  • 間諜++將顯示在RichEdit類名