亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vfp中的漢字輸入編程.txt

?? Vfp 文檔 一些經典編程文章 可供初學者學習編程時使用
?? TXT
字號:

實用技巧 

VFP下漢字輸入法的編程 
東方煙草集團有限公司 
王俊峰 
---- WINDOWS應用程序的中西文輸入界面中,中、西文的錄入需要手工在漢字輸入與西文輸入之間來回切換,使用起來非常繁瑣。針對這一問題,在開發軟件時,可以在程序中設置一下拉選擇框,讓用戶自己選擇其喜歡的漢字輸入法,并且在中文錄入框中讓程序自動設置用戶喜歡的輸入法,純西文、數字輸入的地方,讓程序自動切換成西文狀態。這樣,用戶在進行中西文錄入時,根本不需要手工進行中、西文的來回切換,只管在相應的地方進行錄入即可,實現了中西文輸入的智能識別,極大地改善了程序的易用性。 

---- VFP5.0中,有關漢字輸入方面的函數只有IMESTATUS(),用來在中文與西文之間進行簡單的切換,不能實現系統中任一漢字輸入法的選擇,筆者曾在DELPHI下做過相似的工作,比較簡單地實現了以上想法。但在VFP下要實現此項功能比較復雜,需調用有關IME及注冊表方面的API函數來實現,筆者通過查找大量資料找到了一種較好的解決方法。本文設計環境為VISUAL FOXPRO VER6.0(以下簡稱VFP6.0),中文WINDOWS'98。 

---- 一、 實現方法簡述 

---- 要實現以上功能,需利用WINDOWS'API注冊表方面的函數打開系統的注冊表以獲得當前用戶可使用的漢字輸入法的名稱,將其放入vfp6.0表單中的下拉框中供用戶選擇;同時還需要獲得用于打開漢字輸入法的句柄;再利用獲得的句柄及WINDOWS'API有關打開漢字輸入法的功能調用,在相應位置將用戶選擇的漢字輸入法打開;在西文輸入的地方利用vfp6.0本身的IMESTATUS(0)函數將漢字輸入法關閉即可。 

---- 1、 獲得當前用戶可使用的漢字輸入法名稱 

---- ⑴注冊表HKEY_LOCAL_MACHINE?System?ControlCurrentSet?Control? 

---- ?Keyboard Layouts下包含WINDOWS系統支持的所有鍵盤布局及漢字輸入法所對應的主鍵,如:“E200804"①,在其每一個中都對應著Layout Text子鍵,而其值為此種鍵盤布局或漢字輸入法的名稱,如“幸福五筆”。 

---- ⑵、注冊表中HKEY_CURRENT_USER->Keyboard Layout?Preload中包含當前用戶可使用的漢字輸入法所對應的子鍵,而其鍵值正對應①中的健名。 

---- ⑶、利用vfp6.0自身帶的“registry.prg"對系統的注冊表進行操作。Vfp6.0 的“registry.prg"通過調用系統的API函數給我們提供了對系統注冊表進行操作的類函數,利用其提供的函數可對系統的注冊表進行各種操作,首先到HKEY_CURRENT_USER->Keyboard Layout?Preload中獲得當前用戶可使用的全部漢字輸入法的個數及其所對應的8位16進制字符串,而此字符串的十進制形式正是用以打開某一漢字輸入法所需要的句柄,再利用已獲得的鍵名①到注冊表HKEY_LOCAL_MACHINE?System?ControlCurrentSet?Control?Keyboard Layouts?Layout text中查找所對應的漢字輸入法的中文名稱。而此正為解決輸入法名稱來源的關鍵。 

---- 2、 激活用戶所選擇的漢字輸入法。 

---- vfp本身并沒有提供激活某一漢字輸入法的程序接口,必須利用WIN32的API 函數ActivateKeyboardLayout(HKL hkl,UINT Flags),其中hkl為某種漢字輸入法的句柄,Flags為輸入法如何激活的標記,可以為“KLF_REORDER"、“KLF_SETFORPROCESS"、“KLF_UNLOADPREVIOUS"、“KLF_ACTIVATE",在程序中我們選擇“KLF_ACTIVATE"即可。 

---- 二、VFP下漢字輸入法的編程實現。 

---- 筆者通過在Form下放置一標簽及下拉組合框,同時放置了四個Label、二個Edit 、一個ComboBox、Memo及Button為例進行編程說明: 

---- 1、 在vfp中建立一新的表單form1. 

---- 在vfp中選擇“文件(F)”菜單下的“新建(N)”,然后選定“表單(F)”,單擊“新建”按鈕,生成一新的表單form1,設定form1的屬性caption。 

            Caption=" VFP下輸入法編程示例”
            Autocenter=.T.
---- 在FORM1的init 事件中寫入以下代碼: 

SET PROC TO "C:\Program Files\Microsoft
 Visual Studio\msdn98\98vs\1033\;
samples\vfp98\Classes\registry.PRG"
#DEFINE HKEY_CURRENT_USER 
  -2147483647  && BITSET(0,31)+1
#DEFINE HKEY_LOCAL_MACHINE
  -2147483646  && BITSET(0,31)+2
DECLARE INTEGER ActivateKeyboardLayout in
 win32api integer hkl,string flag; addi
public handle,tnumber
private I,cvalue
dime aregopts[1]
cvalue=''
i=1
frmMyForm = CREATEOBJECT("registry")
frmMyForm.init()
frmMyForm.EnumOptions(@aregopts,"keyboard 
Layout\preload",HKEY_CURRENT_USER,.t.)
&&獲得當前用戶可用的漢字輸入法
的個數及其在注冊表中所對應的主鍵
tnumber=alen(aregopts)
public dime aregopts1[tnumber],dime 
aregopts2[tnumber],dime aregopts3[tnumber]
for i=1 to tnumber 
   frmMyForm.EnumOptions(@aregopts1,
"keyboard Layout\preload\"+aregopts[I];
,HKEY_CURRENT_USER,.F.) 
   && 獲得當前用戶可用的漢字輸入法
   在注冊表中所對應的主鍵值
   aregopts2[i]=aregopts1[2]
   frmMyForm.GetRegKey("layout ;text",
@cvalue,"System\CurrentControlSet\;
Control\Keyboard layouts\"+aregopts2[i],
HKEY_LOCAL_MACHINE)
   && 獲得當前用戶可用的漢字輸入法
   的在注冊表中所對應的中文名稱
   if cvalue="美國 101" .or. cvalue="美國英語"then
      aregopts3[i]="英語(美國)"
   else    
      aregopts3[i]=cvalue
   endif     
endfor
---- 2、 在Form1中添加三個標簽Label1、Label2、Label3及編輯框Edit1、Edit2、 

Memo1,設定其屬性
        Label1.Caption=中文輸入編輯框
        Label1.FontSize=12
        Label1.Alignment=1-右
        Label2.Caption=西文輸入編輯框
        Label2.FontSize=12
        Label2.Alignment=1-右
        Label3.Caption=中文多行文本編輯器
            Label3.FontSize=12
        Label3.Alignment=1-右
            Text1.imemode=0-無控件(默認)
            Text2.imemode=2-關閉IME
            Text3.imemode=0-無控件(默認)
在Text1、Text3的屬性gotfocus中寫入以下代碼:
ActivateKeyboardLayout(handle, 'KLF_ACTIVATE')  &&激活用戶
&&選擇的輸入法
---- 3、在Form1中添加一標簽Label4,設定其屬性為 

        Alignment=1-右
        Caption = 選擇最喜歡的輸入法
        Font.Size=12
        ForeColor=255,0,0
        BackColor=192,192,192
在Form1中添加一下拉組合框Combo1,
        Combo1.Style="1-下拉一列表框”,
        Combo1.Rowsourcetype=aregopts4
        Combo1.Rowsource=5-數組
在屬性中選擇ckick event,對此事件編程,寫入以下代碼:
*此段程序用于將十六進制字符串轉換為十進制整數
*VFP本身沒有相應的轉換函數

private return1,return2,counter,length,flag,strings
counter=1
do while counter< =tnumber
   if this.value=aregopts3[counter]
     strings=aregopts2[counter]
     clea
      exit
   endif
   counter=counter+1
enddo
    length=len(strings)
flag=substr(strings,1,1)
IF flag >'8'  &&若最高位為大于8的數字,
則其對應的數字為負數
   temp2=''
   return2=''
   i1=1
   for i1=1 to length  &&對各位進行取反操作
      TEMP1=substr(stringS,i1,1)
      if temp1 >'9'
         TEMP2=chr(5-(ASC(TEMP1)-65)+48)
      else
         if temp1 >'5'
            TEMP2=chr(15-(ASC(TEMP1)-48)+48)
         else
            temp2=chr(15-(ASC(TEMP1)-48)+55)
         endif
      endif 
      return2=return2+temp2    &&return2為生成的反碼
   endfor 
   STRINGS=RETURN2
endif     
return1=0
I=1
FOR i=1 to length  &&將十六進制數字符串轉換為十進制數
   TEMP1=substr(strings,i,1) 
   if temp1 >'9'
      TEMP2=ASC(TEMP1)-65+10
   ELSE
      TEMP2=ASC(TEMP1)-48
   ENDIF
   return1=TEMP2*16^(length-i)+return1
endfor
if flag >'8'
   handle=INT(0-(return1+1)) 
   &&若為負數,對轉換的十進制數加1,取負
ELSE 
   handle=INT(Return1)
endif
---- 4、 在Form1中添加一命令按鈕Button1,設置其屬性: 

         Caption=退  出
         FontSize=12
       雙擊此命令按鈕,對其Click事件編程,寫入以下程序:
         ThisForm.Release
         Clear dlls
---- 整個示例程序設計過程完成,將此表單保存為Form1,選擇菜單“表單(M)”中的“執行表單(R)” 首先,利用下拉組合框選擇你所喜歡的漢字輸入法,將光標移到中文輸入編輯框中,會發現你選擇的漢字輸入法自動在屏幕上出現,再將光標移到西文輸入編輯框中,漢字輸入法自動關閉,如果將光標放到中文多行文本編輯器中,已選擇的漢字輸入法又自動出現。并且輸入法可以進行多次選擇,如果在中文輸入框或中文多行文本編輯器中輸入西文內容,只需在中文輸入法選擇框中選擇“英語(美國)”即可。 

---- 三、結束語 

---- 從上面的程序代碼可以出,在應用程序的錄入界面中,設置一輸入法選擇下拉組合框,既可以做到在中西文錄入時不用進行錄入法的來回選擇,更可以做到讓用戶選擇其最喜歡的漢字輸入法,錄入界面對用戶來講非常友好、方便、快捷。如果將此程序中漢字輸入法的選擇改編為vfp下的一個通用類控件,在程序開發時,就可以更方便地使用了。 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利一区二区三区| 成人免费高清在线| 婷婷一区二区三区| 亚洲福利一二三区| 亚洲国产毛片aaaaa无费看| 亚洲国产精品久久不卡毛片| 亚洲免费av在线| 亚洲一区在线观看免费| 午夜在线电影亚洲一区| 亚洲国产视频a| 日本va欧美va瓶| 国产精品911| 99精品国产一区二区三区不卡| 成人免费不卡视频| 色呦呦日韩精品| 在线电影国产精品| 26uuu色噜噜精品一区二区| 国产视频亚洲色图| 亚洲精品久久7777| 麻豆久久久久久久| 成人午夜精品在线| 欧美中文一区二区三区| 日韩精品一区在线观看| 国产精品视频在线看| 一区二区三区四区国产精品| 丝袜国产日韩另类美女| 国产成人精品亚洲午夜麻豆| 91视频在线看| 91精品国产日韩91久久久久久| 精品久久久久久最新网址| 国产精品伦理一区二区| 丝袜亚洲精品中文字幕一区| 成人毛片老司机大片| 欧美美女bb生活片| 中文字幕欧美日本乱码一线二线 | av电影在线观看不卡| 6080日韩午夜伦伦午夜伦| 欧美—级在线免费片| 天堂一区二区在线免费观看| 成人爱爱电影网址| 日韩欧美一区二区免费| 亚洲品质自拍视频网站| 国产一区二区三区在线观看免费视频 | 亚洲午夜免费福利视频| 麻豆91小视频| 日本高清不卡一区| 久久精品亚洲乱码伦伦中文| 香蕉久久夜色精品国产使用方法 | 亚洲444eee在线观看| 成人午夜私人影院| 2020国产精品自拍| 日韩高清一级片| 在线观看日韩国产| 国产精品美女久久久久aⅴ| 蜜臀国产一区二区三区在线播放| 91麻豆高清视频| 中文字幕第一区第二区| 狠狠色综合色综合网络| 日韩精品一区二| 奇米精品一区二区三区四区| 在线看一区二区| 亚洲伦理在线精品| av在线播放不卡| 国产精品国产三级国产三级人妇 | 亚洲精品成人少妇| 成人av在线观| 国产精品美女久久久久aⅴ国产馆| 久久99精品国产91久久来源| 91精品国产品国语在线不卡| 亚洲一级二级在线| 欧美日韩一区二区在线观看| 亚洲福利视频一区| 欧美性高清videossexo| 亚洲电影视频在线| 欧美日韩黄视频| 天天色 色综合| 日韩区在线观看| 喷白浆一区二区| 久久你懂得1024| 国产aⅴ综合色| 国产精品欧美一区喷水| 99麻豆久久久国产精品免费| **欧美大码日韩| 在线一区二区三区| 丝袜亚洲另类欧美| 久久综合色播五月| 国产不卡免费视频| 亚洲色图视频免费播放| 欧美性淫爽ww久久久久无| 亚洲自拍偷拍九九九| 欧美丰满一区二区免费视频| 麻豆精品蜜桃视频网站| 欧美激情资源网| 欧美午夜在线观看| 日本成人在线看| 久久久国产精华| 91福利区一区二区三区| 日本 国产 欧美色综合| 2020国产精品自拍| 色999日韩国产欧美一区二区| 亚洲一区二区不卡免费| 欧美成人午夜电影| 成人h动漫精品一区二| 亚洲国产日韩一级| 久久综合色播五月| 一本久道中文字幕精品亚洲嫩| 无码av免费一区二区三区试看| 日韩欧美在线123| eeuss鲁片一区二区三区在线观看| 亚洲色图制服诱惑| 精品国产亚洲在线| 一本色道亚洲精品aⅴ| 激情综合网天天干| 亚洲视频资源在线| 久久一夜天堂av一区二区三区| 99久久婷婷国产综合精品| 奇米888四色在线精品| 亚洲欧洲国产日韩| 精品国产一二三| 欧美无乱码久久久免费午夜一区| 国产一区二区三区高清播放| 亚洲精品写真福利| 久久久久久久久97黄色工厂| 欧美日韩国产美女| 99精品视频在线播放观看| 久久精品国产999大香线蕉| 亚洲综合免费观看高清完整版在线 | 色综合激情五月| 国产又粗又猛又爽又黄91精品| 亚洲成人免费av| 亚洲欧美一区二区不卡| 26uuu国产在线精品一区二区| 在线观看一区二区精品视频| 大胆亚洲人体视频| 国产成人亚洲综合a∨婷婷| 男人操女人的视频在线观看欧美| 一级中文字幕一区二区| 亚洲美女淫视频| 中文字幕一区二区在线观看 | 欧美亚洲综合网| 色先锋aa成人| 丰满少妇久久久久久久| 国产毛片一区二区| 国产一区二区免费视频| 麻豆成人综合网| 美国十次综合导航| 另类调教123区| 久久99精品久久久久久久久久久久| 亚洲高清在线精品| 亚洲午夜久久久| 日韩制服丝袜av| 蜜臀av性久久久久蜜臀aⅴ流畅| 蜜臀久久久99精品久久久久久| 日本一区中文字幕| 久久精品国产精品亚洲精品 | 亚洲亚洲人成综合网络| 亚洲国产婷婷综合在线精品| 亚洲午夜私人影院| 日韩福利视频导航| 久久99精品国产91久久来源| 国产老女人精品毛片久久| 国产成人av影院| 色综合中文字幕国产| 99re成人在线| 欧美人与z0zoxxxx视频| 欧美精品一区二区三| 欧美韩国日本综合| 亚洲色图.com| 日韩制服丝袜av| 国产激情偷乱视频一区二区三区| 成人做爰69片免费看网站| 91麻豆高清视频| 91精品欧美福利在线观看| 国产偷国产偷亚洲高清人白洁| 亚洲欧洲精品成人久久奇米网| 亚洲综合成人网| 国产九色精品成人porny| 91老司机福利 在线| 欧美日本国产一区| 日本一区二区综合亚洲| 亚洲一区二区三区四区中文字幕| 日韩影院免费视频| 暴力调教一区二区三区| 在线综合+亚洲+欧美中文字幕| 久久久蜜桃精品| 亚洲一区二区三区美女| 国产一区二区0| 欧美男男青年gay1069videost| 久久天堂av综合合色蜜桃网| 中文字幕一区二区三中文字幕| 亚洲欧洲综合另类在线 | 国产精品拍天天在线| 五月婷婷综合在线| 成人性色生活片| 日韩一区二区在线免费观看| 亚洲欧美激情在线| 国产999精品久久| 日韩三级视频在线看| 一区二区日韩电影| 北条麻妃国产九九精品视频|