VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

請問如何控制全形半形切換(已有完整解決方案)

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
KKKLYNN



註冊時間: 2004-09-17
文章: 357


第 1 樓

發表發表於: 星期一 十一月 19, 2007 10:48 am    文章主題: 請問如何控制全形半形切換(已有完整解決方案) 引言回覆

各位好
使用
KEYBOARD '{SHIFT+SPACEBAR}'
卻無效(也沒有錯誤訊息)
以上謝謝


KKKLYNN 在 星期三 十一月 21, 2007 2:38 pm 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
KKKLYNN



註冊時間: 2004-09-17
文章: 357


第 2 樓

發表發表於: 星期二 十一月 20, 2007 11:47 am    文章主題: 引言回覆

請問這個
如何轉至vfp使用
Private Declare Function ImmIsIME Lib "imm32.dll" (ByVal hkl As Long) As Long
Private Declare Function ImmSimulateHotKey Lib "imm32.dll" (ByVal hwnd As Long, ByVal dw As Long) As Long
Private Const IME_THOTKEY_IME_NONIME_TOGGLE = &H70
Private Const IME_THOTKEY_SHAPE_TOGGLE = &H71

Public Sub ImeFullShape()
Dim msgPeekResult As Msg
Dim hwnd As Long

hwnd = Screen.ActiveForm.hwnd
If ImmIsIME(GetKeyboardLayout(0)) = 0 Then
ImmSimulateHotKey hwnd, IME_THOTKEY_IME_NONIME_TOGGLE
End If
DoEvents
ImmSimulateHotKey hwnd, IME_THOTKEY_SHAPE_TOGGLE
End Sub
回頂端
檢視會員個人資料 發送私人訊息
sheuok



註冊時間: 2004-11-20
文章: 63
來自: Taiwan

第 3 樓

發表發表於: 星期三 十一月 21, 2007 10:54 am    文章主題: 引言回覆

轉換結果如下:

Declare Integer ImmIsIME In imm32.Dll Integer hkl
Declare Integer ImmSimulateHotKey In imm32.Dll Integer HWnd, Integer dw
ime_thotkey_ime_nonime_toggle = 0x70
ime_thotkey_shape_toggle = 0x71
uc_hwnd=Thisform.HWnd
If IMEStatus()=2
IMEStatus(1)
EndIf
immsimulatehotkey(uc_hwnd, ime_thotkey_shape_toggle)
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
KKKLYNN



註冊時間: 2004-09-17
文章: 357


第 4 樓

發表發表於: 星期三 十一月 21, 2007 11:37 am    文章主題: 引言回覆

您好
使用web browse於form
當結束form後回到其它頁面
pc會自動切至全行
若又切回有browse的頁面時又會變成半形
似乎受到browse控件的影響
所以希望能脫離browse頁面時能切回半形
本來想用keyborad,但無shift+space組合
使用您轉換的式子,我沒有辦法試出來(hwnd屬性無法使用)
把它截掉,但無切換功能
謝謝
回頂端
檢視會員個人資料 發送私人訊息
KKKLYNN



註冊時間: 2004-09-17
文章: 357


第 5 樓

發表發表於: 星期三 十一月 21, 2007 11:53 am    文章主題: 引言回覆

剛剛又試了一下
在BROWSE控件狀況下,可將全形轉成半形
但轉回其它FORM時卻又自動轉回全形
而此時使用此轉換功能卻無效
表示再BROWSE控件下才有效能將全形轉回半形
但離開BROWSE控件頁面時,又轉回全形
以上謝謝
回頂端
檢視會員個人資料 發送私人訊息
sheuok



註冊時間: 2004-11-20
文章: 63
來自: Taiwan

第 6 樓

發表發表於: 星期三 十一月 21, 2007 12:50 pm    文章主題: 引言回覆

KKKLYNN 寫到:
您好
使用您轉換的式子,我沒有辦法試出來(hwnd屬性無法使用)


給您一個範例


sheuok 在 星期三 十一月 21, 2007 2:13 pm 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
KKKLYNN



註冊時間: 2004-09-17
文章: 357


第 7 樓

發表發表於: 星期三 十一月 21, 2007 1:23 pm    文章主題: 引言回覆

您好
知道了
VFP9可以
VFP6無HWnd.uc_hwnd屬性
只可惜我的系統還沒用VFP9
以上謝謝
回頂端
檢視會員個人資料 發送私人訊息
sheuok



註冊時間: 2004-11-20
文章: 63
來自: Taiwan

第 8 樓

發表發表於: 星期三 十一月 21, 2007 2:11 pm    文章主題: 引言回覆

可調用Windows Api 中的 GetActiveWindow 取代 Thisform.HWnd

完整的程序如下:

Declare Integer ImmIsIME In imm32.Dll Integer hkl
Declare Integer ImmSimulateHotKey In imm32.Dll Integer HWnd, Integer dw
Declare Integer GetActiveWindow In Win32API
ime_thotkey_ime_nonime_toggle = 0x70
ime_thotkey_shape_toggle = 0x71
uc_hwnd=GetActiveWindow() &&Thisform.HWnd
If IMEStatus()=2
IMEStatus(1)
EndIf
immsimulatehotkey(uc_hwnd, ime_thotkey_shape_toggle)
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
KKKLYNN



註冊時間: 2004-09-17
文章: 357


第 9 樓

發表發表於: 星期三 十一月 21, 2007 2:38 pm    文章主題: 引言回覆

您好
OK啦
這問題是在調用WEB BROWSE 控件時
在離開有WEB BROWSE 的FORM,系統會自動切換成全形
這問題再VS2005也是會出現
以上謝謝 sheuok 兄 大力的協助
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作