• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Pro/E二次開發(fā)中Edit Control控件中文輸入問題的解決方案

      2011-06-23 03:02:10黃海英穆立茂
      裝備制造技術(shù) 2011年12期
      關(guān)鍵詞:二次開發(fā)控件對(duì)話框

      張 靖,黃海英,穆立茂

      (解放軍軍械工程學(xué)院,河北 石家莊 050003)

      Pro/TOOLKIT開發(fā)工具包,是Pro/ENGINEER(簡(jiǎn)稱Pro/E)提供的實(shí)現(xiàn)參數(shù)化設(shè)計(jì)的應(yīng)用程序接口(API)。其封裝了許多針對(duì)Pro/E底層資源調(diào)用的庫函數(shù)與頭文件,借助第三方編譯環(huán)境(如VC等)進(jìn)行調(diào)試,可以開發(fā)出能夠與Pro/E的無縫連接的應(yīng)用程序[1]。

      對(duì)話框是實(shí)現(xiàn)人機(jī)交互的重要通道。目前對(duì)話框的開發(fā)方式有兩種:UI對(duì)話框和MFC對(duì)話框。雖然利用Pro/TOOLKIT提供的UI對(duì)話框與Pro/E界面風(fēng)格相一致,但不足之處是用文本文件的形式定義對(duì)話框,不能直觀地反映界面的布局。而MFC是VC++程序的一個(gè)重要軟件資源,使用MFC可以充分利用VC++開發(fā)環(huán)境的先進(jìn)技術(shù)的工具,實(shí)現(xiàn)程序界面的可視化設(shè)計(jì),與UI對(duì)話框相比,使用MFC的對(duì)話框界面布局上更為容易,設(shè)計(jì)、修改和調(diào)試更為方便。

      1 問題的提出

      MFC對(duì)話框的顯示方式分為兩種:模態(tài)對(duì)話框和非模態(tài)對(duì)話框。

      模態(tài)對(duì)話框(Mode):在模態(tài)對(duì)話框激活狀態(tài)下,不允許用戶再選擇或激活其他窗口,只有在模態(tài)對(duì)話框關(guān)閉之后,用戶才能對(duì)其他窗口進(jìn)行操作。模態(tài)對(duì)話框的設(shè)計(jì)比較簡(jiǎn)單,但在Pro/E中使用有些不配套。

      非模態(tài)對(duì)話框(Modeless):在非模態(tài)對(duì)話框激活狀態(tài)下,用戶可以激活其他窗口,激活其他窗口之后,非模態(tài)對(duì)話框處于非活動(dòng)狀態(tài);只要用鼠標(biāo)重新選中非模態(tài)對(duì)話框,就可以激活它。

      非模態(tài)對(duì)話框使用更為靈活。模態(tài)對(duì)話框激活時(shí),不能使用其他窗口,這與Pro/E的慣例不相符,從而使得有些功能無法實(shí)現(xiàn),比如查詢長(zhǎng)度時(shí)需要和主界面交互數(shù)據(jù)。因此,一般情況下,我們使用MFC的非模態(tài)對(duì)話框。

      編輯控件(Edit Control)是對(duì)話框?qū)崿F(xiàn)鍵盤輸入的重要的人機(jī)交互接口。通過編輯控件,用戶可以輸入文本信息,并將輸入信息轉(zhuǎn)換為各種類型的數(shù)據(jù)。然而由于Pro/E對(duì)中文的支持得不夠完善,在使用Edit Control控件編程過程中,當(dāng)此控件位于非模態(tài)對(duì)話框中時(shí)不能輸入中文。

      針對(duì)這個(gè)問題,在《Pro/ENGINEER二次開發(fā)技術(shù)基礎(chǔ)》著作中提出了一種解決方案[3],就是建立模態(tài)對(duì)話框,然后在模態(tài)對(duì)話框中使用Edit Control控件,這樣就可以接收中文輸入了,也就是通過模態(tài)對(duì)話框進(jìn)行中轉(zhuǎn)。然而這種方案存在兩方面不足:

      一是與Pro/E軟件的整體風(fēng)格不一致,其軟件的風(fēng)格是絕大多數(shù)對(duì)話框使用非模態(tài)對(duì)話框。

      二是此模態(tài)對(duì)話框不是純粹的模態(tài)對(duì)話框。雖然采用的是模態(tài)對(duì)話框,但Pro/E主窗口仍然能接收到鼠標(biāo)消息。比如:在打開模態(tài)對(duì)話框的環(huán)境下,如果不小心單擊了Pro/E主窗口上的“新建”按鈕,雖然“新建”功能不會(huì)立即執(zhí)行,但是當(dāng)退出模態(tài)對(duì)話框后,“新建”功能會(huì)馬上實(shí)現(xiàn),也就是會(huì)立刻彈出一個(gè)“新建”對(duì)話框。所以在Pro/E環(huán)境下基于MFC開發(fā)的模態(tài)對(duì)話框,不是真正意義上的模態(tài)對(duì)話框。因此這種方案還不夠理想,下面提供另外一種解決方案。

      2 解決方案

      首先進(jìn)行問題分析,出現(xiàn)在非模態(tài)對(duì)話框中Edit Control控件不能接收中文的這種情況的原因是:輸入的文本先被Pro/E翻譯,然后才傳到對(duì)話框資源中,在這個(gè)轉(zhuǎn)換過程中,就會(huì)出現(xiàn)亂碼。

      因?yàn)槭褂玫氖欠悄B(tài)對(duì)話框,而使用模態(tài)對(duì)話框就不會(huì)出現(xiàn)這個(gè)問題。因?yàn)榉悄B(tài)對(duì)話框和Pro/E的主對(duì)話框是同時(shí)進(jìn)行工作的,這個(gè)時(shí)候如果響應(yīng)一個(gè)消息,是Pro/E的主窗口首先響應(yīng)這個(gè)消息,然后經(jīng)過翻譯,才傳到開發(fā)者設(shè)計(jì)的對(duì)話框當(dāng)中,所以是在這個(gè)轉(zhuǎn)換過程中出現(xiàn)了BUG,造成顯示結(jié)果是亂碼。

      下面就提供一種解決方案:

      (1)第一步。為Edit Control控件的EN_SETFOCUS消息添加消息處理函數(shù),代碼如下:

      (2)第二步。為Edit Control控件的EN_KILLFOCUS消息添加消息處理函數(shù),代碼如下:

      當(dāng)點(diǎn)擊Edit Control控件時(shí),也就是輸入的焦點(diǎn)放到了Edit Control控件上面,這時(shí)就產(chǎn)生一次EN_SETFOCUS消息,在這個(gè)消息處理函數(shù)中,建立一個(gè)新的消息循環(huán),這個(gè)消息循環(huán)是不經(jīng)過Pro/E主程序的當(dāng)前的消息循環(huán),這時(shí)候輸入的數(shù)據(jù)直接進(jìn)入對(duì)話框當(dāng)中,不經(jīng)過再進(jìn)行翻譯。

      當(dāng)離開Edit Control控件結(jié)束了輸入操作,這時(shí)就產(chǎn)生一次失去焦點(diǎn)EN_KILLFOCUS消息,在這個(gè)消息處理函數(shù)中,使用PosTQuiTMessage(0)命令,結(jié)束開發(fā)人員建立的消息循環(huán)。也就是當(dāng)點(diǎn)擊開始輸入的時(shí)候和退出輸入的時(shí)候,這之間建立了一個(gè)消息循環(huán),使得輸入的文字直接傳遞到對(duì)話框當(dāng)中。圖1是此解決方案在齒輪參數(shù)化設(shè)計(jì)程序中的應(yīng)用實(shí)例(實(shí)例是使用Pro/E 4.0版本搭配Visual Studio 2008進(jìn)行開發(fā)的)。

      圖1 Pro/E參數(shù)化設(shè)計(jì)生成內(nèi)齒輪界面

      3 結(jié)束語

      Pro/TOOLKIT是Pro/E系統(tǒng)中功能強(qiáng)大的二次開發(fā)工具,使用Pro/TOOLKIT進(jìn)行專業(yè)化應(yīng)用程序設(shè)計(jì)、創(chuàng)建和調(diào)試是一種最佳的選擇。此文針對(duì)Pro/E的一個(gè)BUG提出了一種有效的解決方法,為開發(fā)過程中遇到的Edit Control控件不能錄入中文的問題提供了一種新思路。

      [1]李世國(guó).Pro/Toolkit程序設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2003.

      [2]Parametric Technology Corporation.Prop ToolkiTUser’s Guide[M].USA:Parametric Technology Corporation,2004.

      [3]吳立軍.Pro/ENGINEER二次開發(fā)技術(shù)基礎(chǔ)[M].北京:電子工業(yè)出版社,2006.

      猜你喜歡
      二次開發(fā)控件對(duì)話框
      淺談基于Revit平臺(tái)的二次開發(fā)
      甘肅科技(2020年20期)2020-04-13 00:30:02
      正?;謴?fù)虛擬機(jī)
      淺談Mastercam后處理器的二次開發(fā)
      模具制造(2019年3期)2019-06-06 02:11:02
      Bootlace Worms’Secret etc.
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      西門子Easy Screen對(duì)倒棱機(jī)床界面二次開發(fā)
      基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
      快速抓取對(duì)話框中的完整信息
      電腦迷(2012年22期)2012-04-29 20:30:54
      就這樣玩會(huì)VBA中常見的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      在PowerBuUder中利用WinSock控件制作簡(jiǎn)單的Web服務(wù)器
      商河县| 临湘市| 茂名市| 革吉县| 溆浦县| 珠海市| 巨野县| 宜阳县| 溆浦县| 邹平县| 茂名市| 牡丹江市| 金山区| 阿拉善右旗| 海安县| 北宁市| 平定县| 历史| 汶上县| 银川市| 常德市| 姚安县| 黄冈市| 大石桥市| 湘潭县| 贺州市| 繁峙县| 张掖市| 天祝| 冕宁县| 宁强县| 新巴尔虎左旗| 宜兰县| 葫芦岛市| 安义县| 冀州市| 巴塘县| 炉霍县| 杨浦区| 化隆| 聂拉木县|