亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        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)用的庫(kù)函數(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é)束語(yǔ)

        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ù)器
        91九色成人蝌蚪首页| 爆乳无码AV国内| 色佬易精品视频免费在线观看| 加勒比东京热中文字幕| 精品亚洲成a人片在线观看| 久久99精品久久久久久久清纯| 完整在线视频免费黄片| 一区二区三区国产精品麻豆| 一色桃子中文字幕人妻熟女作品 | 国产精品成人观看视频| 欧美在线观看一区二区| 美女被插到高潮嗷嗷叫| 国内自拍愉拍免费观看| 国精品无码一区二区三区在线蜜臀| 午夜婷婷国产麻豆精品| 国产内射视频在线观看| 蜜桃一区二区三区视频网址| 高清不卡一区二区三区| 欧美一级人与嘼视频免费播放| 亚洲国产精品二区三区| 亚洲av片无码久久五月| 亚洲综合无码无在线观看| 亚洲AV无码久久精品成人| 蜜桃传媒免费观看视频| 久久精品无码一区二区日韩av| 乱码午夜-极品国产内射| 日本av一区二区播放| 免费黄片小视频在线播放| 双腿张开被9个男人调教| 久久精品国产6699国产精 | 亚洲视频免费一区二区| 中文字幕免费不卡二区| 97福利视频| 国产av一级二级三级| 日韩人妻ol丝袜av一二区| 精品乱码一区二区三区四区| 亚洲综合一区二区三区蜜臀av | 亚洲不卡中文字幕无码| 国产人成视频免费在线观看| 亚洲国产精品一区二区久久恐怖片 | 无码电影在线观看一区二区三区|