 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
yder
註冊時間: 2009-09-03 文章: 14
第 1 樓
|
發表於: 星期四 十月 15, 2009 12:38 pm 文章主題: 從VFP剪貼中文到其他軟體視窗變成亂碼?? |
|
|
我不論從vfp的開發環境, 或編譯好的.exe執行畫面, 複製中文文字, 要貼到像記事本, 或Word 等其他視窗時, 都會變成亂碼, 但從word等貼進vfp則不會.
我猜是因為我使用vfp6是英文版本, 請問是不是補充了那些 .dll 可以解決這個問題呢, 還是非得用繁中版的vfp才可以, 謝謝 !!
我會需要如此剪貼的原因是因為User有時需要在政府單位的網站上輸入資料, 如果不能用剪貼的, 變成同樣資料要打兩遍. |
|
回頂端 |
|
 |
jurgen
註冊時間: 2007-09-24 文章: 17
第 2 樓
|
發表於: 星期四 十月 15, 2009 3:30 pm 文章主題: |
|
|
在網上找到的
但你必須把要複製的資料先轉為 unicode 格式
FUNCTION CopyUnicodeText2Clipboard(tcUnicodeText)
LOCAL lnDataLen, lcDropFiles, llOk, i, lhMem, lnPtr, lcUnicodeText
#DEFINE CF_UNICODETEXT 13
* Global Memory Variables with Compile Time Constants
#DEFINE GMEM_MOVABLE 0x0002
#DEFINE GMEM_ZEROINIT 0x0040
#DEFINE GMEM_SHARE 0x2000
* Load required Windows API functions
=LoadApiDlls()
llOk = .T.
lcUnicodeText = tcUnicodeText + CHR(0)+CHR(0)
lnDataLen = LEN(lcUnicodeText)
* Copy Unicode text into the allocated memory
lhMem = GlobalAlloc(GMEM_MOVABLE+GMEM_ZEROINIT+GMEM_SHARE, lnDataLen)
lnPtr = GlobalLock(lhMem)
=CopyFromStr(lnPtr, @lcUnicodeText, lnDataLen)
=GlobalUnlock(lhMem)
* Open clipboard and store Unicode text into it
llOk = (OpenClipboard(0) <> 0)
IF llOk
=EmptyClipboard()
llOk = (SetClipboardData(CF_UNICODETEXT, lhMem) <> 0)
* If call to SetClipboardData() is successful, the system will take ownership of the memory
* otherwise we have to free it
IF NOT llOk
=GlobalFree(lhMem)
ENDIF
* Close clipboard
=CloseClipboard()
ENDIF
RETURN llOk
************************************************************
FUNCTION LoadApiDlls
************************************************************
* Clipboard Functions
DECLARE LONG OpenClipboard IN WIN32API LONG HWND
DECLARE LONG CloseClipboard IN WIN32API
DECLARE LONG EmptyClipboard IN WIN32API
DECLARE LONG SetClipboardData IN WIN32API LONG uFormat, LONG hMem
* Memory Management Functions
DECLARE LONG GlobalAlloc IN WIN32API LONG wFlags, LONG dwBytes
DECLARE LONG GlobalFree IN WIN32API LONG HMEM
DECLARE LONG GlobalLock IN WIN32API LONG HMEM
DECLARE LONG GlobalUnlock IN WIN32API LONG HMEM
DECLARE LONG RtlMoveMemory IN WIN32API As CopyFromStr LONG lpDest, String @lpSrc, LONG iLen
RETURN
ENDFUNC |
|
回頂端 |
|
 |
yder
註冊時間: 2009-09-03 文章: 14
第 3 樓
|
發表於: 星期四 十月 15, 2009 5:10 pm 文章主題: |
|
|
我努力來去測試看看, 先感謝 jurgen 大大 |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|