專利名稱:基于gdi/gdi+的虛擬文本編輯方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及文字處理技術(shù)領(lǐng)域,尤其涉及一種基于⑶I/⑶1+上的虛擬文本編輯方法及裝置。
背景技術(shù):
隨著計(jì)算機(jī)應(yīng)用的日益普及,計(jì)算機(jī)的使用方式也在發(fā)生著巨大變化,而文本編輯就是其中一個(gè)很重要的方面。文字處理是多媒體技術(shù)中的一個(gè)重要內(nèi)容,在Windows系統(tǒng)中通常是基于微軟的 GDI/GDI+來進(jìn)行文字和圖形的處理。GDI (Graphics Device Interface,圖形設(shè)備接口)的主要任務(wù)是負(fù)責(zé)系統(tǒng)與繪圖程序之間的信息交換,處理所有Windows程序的圖形輸出。利用GDI所提供的眾多函數(shù)可以方便的在屏幕、打印機(jī)及其它輸出設(shè)備上輸出圖形、文本等, GDI的出現(xiàn)使程序員不需要關(guān)心硬件設(shè)備及設(shè)備驅(qū)動(dòng),就可以將應(yīng)用程序的輸出轉(zhuǎn)化為硬件設(shè)備上的輸出,實(shí)現(xiàn)了程序開發(fā)者與硬件設(shè)備的隔離,大大方便了開發(fā)工作,因此得到程序開發(fā)者的青睞和廣泛的應(yīng)用。雖然GDI/GDI+在處理用戶輸出界面時(shí)給程序開發(fā)者帶來了極大的方便,對(duì)文字的處理輸出上功能也非常強(qiáng)大,但是GDI/GDI+在提供強(qiáng)大功能和方便的同時(shí),也存在著一些不足。如⑶I/⑶1+在顯示文字的時(shí)候不能在顯示處進(jìn)行基本⑶I/⑶1+的文本編輯,要想增加或者刪除文字,必須通過一個(gè)額外的文本輸入窗口,而使用額外的文本輸入窗口不僅要消耗額外的資源,而且編輯的文字與GDI/GDI+繪制的文字很難完全的一一對(duì)應(yīng)起來, 容易產(chǎn)生字符相對(duì)偏差。
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明提供一種基于⑶I/⑶1+的虛擬文本編輯方法及裝置,不需要通過額外的文本輸入窗口即可在⑶I/⑶1+上進(jìn)行文本編輯。一種基于⑶I/⑶1+的虛擬文本編輯方法,包括以下步驟創(chuàng)建一個(gè)⑶I/0)1+的文本對(duì)象;創(chuàng)建所述文本對(duì)象的鼠標(biāo)響應(yīng)事件,使其與系統(tǒng)的鼠標(biāo)事件一一對(duì)應(yīng);創(chuàng)建所述文本對(duì)象的編輯狀態(tài),并根據(jù)所述鼠標(biāo)響應(yīng)事件判斷是否進(jìn)入該編輯狀態(tài);若進(jìn)入編輯狀態(tài),則創(chuàng)建所述文本對(duì)象的鍵盤響應(yīng)事件,使其與系統(tǒng)的鍵盤事件一一對(duì)應(yīng),并等待接受鍵盤的輸入信息。一種基于⑶I/⑶1+的虛擬文本編輯裝置,包括文本對(duì)象創(chuàng)建模塊,用于創(chuàng)建一個(gè)GDI/GDI+的文本對(duì)象;與所述文本對(duì)象創(chuàng)建模塊相連接的鼠標(biāo)事件創(chuàng)建模塊,用于創(chuàng)建所述文本對(duì)象的鼠標(biāo)響應(yīng)事件,使其與系統(tǒng)的鼠標(biāo)事件一一對(duì)應(yīng);與所述鼠標(biāo)事件創(chuàng)建模塊相連接的編輯狀態(tài)創(chuàng)建模塊,用于創(chuàng)建所述文本對(duì)象的編輯狀態(tài),并根據(jù)所述鼠標(biāo)響應(yīng)事件判斷是否進(jìn)入該編輯狀態(tài);與所述編輯狀態(tài)創(chuàng)建模塊相連接的鍵盤事件創(chuàng)建模塊,用于當(dāng)進(jìn)入編輯狀態(tài)時(shí), 創(chuàng)建所述文本對(duì)象的鍵盤響應(yīng)事件,使其與系統(tǒng)的鍵盤事件一一對(duì)應(yīng),并等待接受鍵盤的輸入信息。從以上方案可以看出,本發(fā)明的基于GDI/GDI+的虛擬文本編輯方法及裝置,由于彌補(bǔ)了 GDI/GDI+不能直接編輯文本的缺點(diǎn),可以不需要通過額外的文本輸入窗口即可在 GDI/GDI+上進(jìn)行文本編輯,避免了使用其他方法來實(shí)現(xiàn)本發(fā)明目的時(shí)所帶來的復(fù)雜計(jì)算和字符偏差的問題,也避免了由于額外的去開辟一個(gè)窗口和添加控件所產(chǎn)生的資源消耗,有效增加了 GDI/GDI+編輯文本的直觀性,提高了系統(tǒng)性能。
圖1為本發(fā)明基于GDI/GDI+的虛擬文本編輯方法的流程圖;圖2為應(yīng)用本發(fā)明的方法所創(chuàng)建的文本對(duì)象效果示意圖;圖3為本發(fā)明基于⑶I/⑶1+的虛擬文本編輯裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明提供一種基于GDI/GDI+的虛擬文本編輯方法及裝置,能夠解決現(xiàn)有技術(shù)中⑶I/⑶1+在顯示文字的時(shí)候不能在顯示處進(jìn)行基本⑶I/⑶1+的文本編輯、需要通過一個(gè)額外的文本輸入窗口才能進(jìn)行文本編輯的問題。為實(shí)現(xiàn)上述目的,本發(fā)明提供一種基于⑶I/⑶1+的虛擬文本編輯方法,如圖1所示,包括以下步驟步驟Si,創(chuàng)建一個(gè)⑶I/⑶1+的文本對(duì)象。所創(chuàng)建的文本對(duì)象可參見圖2。另外,作為一個(gè)較好的實(shí)施例,在步驟Sl創(chuàng)建一個(gè)⑶I/⑶1+的文本對(duì)象后,還可以包括步驟Sll 記錄創(chuàng)建的文本對(duì)象的坐標(biāo)和大小Text(x,y,w,h),并根據(jù)所述坐標(biāo)和大小確定所述文本對(duì)象的有效范圍。步驟S2,創(chuàng)建所述文本對(duì)象的鼠標(biāo)響應(yīng)事件,使其與系統(tǒng)的鼠標(biāo)事件一一對(duì)應(yīng)。該步驟又可以進(jìn)一步地包括如下小步驟1)、取得系統(tǒng)鼠標(biāo)事件,并記錄鼠標(biāo)在屏幕上移動(dòng)的坐標(biāo)位置ρ (x, y);2)、使用鼠標(biāo)坐標(biāo)ρ值與文本對(duì)象坐標(biāo)和大小進(jìn)行比較,判斷ρ值是否落在文本對(duì)象的有效范圍內(nèi),可采用如下語(yǔ)句Text. χ < = χ < = Text. x+Text. wMText. y<=y< = Text. y+Text. h。如果ρ值滿足上述公式,則說明鼠標(biāo)在文本對(duì)象的有效范圍內(nèi),并記鼠標(biāo)在文本對(duì)象上的有效狀態(tài)bFlag為True,否則為非有效狀態(tài)i^alse ;3)、當(dāng)鼠標(biāo)在文本對(duì)象的有效范圍內(nèi),按下左鍵并且沒有UP (放開)時(shí),文本對(duì)象響應(yīng)鼠標(biāo)的移動(dòng)事件;4)、當(dāng)鼠標(biāo)在文本對(duì)象的有效范圍內(nèi),雙擊鼠標(biāo)左鍵時(shí),文本對(duì)象響應(yīng)鼠標(biāo)的左鍵雙擊事件;5)、當(dāng)鼠標(biāo)在文本對(duì)象的有效范圍內(nèi),單擊鼠標(biāo)左鍵時(shí),文本對(duì)象響應(yīng)鼠標(biāo)的左鍵單擊事件;6)、當(dāng)鼠標(biāo)在文本對(duì)象的有效范圍內(nèi),單擊鼠標(biāo)右鍵時(shí),文本對(duì)象響應(yīng)鼠標(biāo)的右鍵單擊事件。需要說明的是,文本對(duì)象的狀態(tài)被默認(rèn)設(shè)置為非編輯狀態(tài)。步驟S3,創(chuàng)建所述文本對(duì)象的編輯狀態(tài),以提供基本GDI/GDI+的文本編輯,并根據(jù)步驟S2中的鼠標(biāo)響應(yīng)事件判斷是否需要進(jìn)入編輯狀態(tài)。上述的判斷過程具體可以包括如下當(dāng)鼠標(biāo)坐標(biāo)位于文本對(duì)象的有效范圍內(nèi)并且發(fā)生鼠標(biāo)的左鍵雙擊事件時(shí),進(jìn)入編輯狀態(tài),否則進(jìn)入非編輯狀態(tài),在非編輯狀態(tài)下是不能提供GDI/GDI+的文本編輯的。進(jìn)一步的,步驟S3可以包括如下的小步驟1)、當(dāng)鼠標(biāo)在文本對(duì)象的有效范圍內(nèi),并且響應(yīng)了鼠標(biāo)左鍵雙擊事件,使得文本對(duì)象處于編輯狀態(tài)時(shí),系統(tǒng)根據(jù)文本對(duì)象的坐標(biāo)和大小,在對(duì)象邊框的周圍畫上角度大約為 20-70度,高度約為10-30個(gè)象素,間隔約為3-10個(gè)象素的斜線段(見圖2),并記錄所有斜線段的坐標(biāo)值;2)、如果文本對(duì)象處于編輯狀態(tài),則在文本對(duì)象框內(nèi)約5-20個(gè)象素處繪制一條垂直的寬度為1-2個(gè)象素,高度為5-20個(gè)象素的光標(biāo),光標(biāo)的高度與所述文本對(duì)象內(nèi)字體的大小相對(duì)應(yīng)或相等(見圖2)。光標(biāo)的繪制具體可以包括如下的三個(gè)步驟i)、開辟一個(gè)光標(biāo)的工作線程,工作線程主要用來控制光標(biāo)直線的顯示與隱藏。ii)、設(shè)置光標(biāo)的繪制算法A、定義一個(gè)時(shí)間值nTime = 1000 (約一秒鐘)、一個(gè)狀態(tài)控制變量nFlag = 0、一個(gè)循環(huán)計(jì)數(shù)器nCoimt = 0 ;B、啟動(dòng)一個(gè)光標(biāo)繪制工作線程;C、在工作線程內(nèi)運(yùn)行一個(gè)循環(huán)語(yǔ)句(如while語(yǔ)句),并且判斷狀態(tài)控制變量的大小是否等于0,如果等于0時(shí)就開始繪制光標(biāo)直線的循環(huán)語(yǔ)句,同時(shí)循環(huán)計(jì)算器nCoimt開始遞增,當(dāng)循環(huán)到nCoimt = nTime時(shí),nFlag = 1,繪制光標(biāo)語(yǔ)句結(jié)束;D、當(dāng)nFlag等于1時(shí)開始隱藏光標(biāo)直線的循環(huán)語(yǔ)句,nCount開始遞減,當(dāng)遞減到 nCount = 0時(shí)nFlag = 0,結(jié)束隱藏光標(biāo)直線的語(yǔ)句操作;E、重復(fù)C、D的操作,這樣達(dá)到一個(gè)光標(biāo)閃動(dòng)的效果。iii)、定位光標(biāo)的位置A、默認(rèn)設(shè)置文本對(duì)象中文字之間的字間距為2個(gè)象素,光標(biāo)就繪制在緊貼著字的左側(cè)或右則旁邊的1個(gè)象素處;另外默認(rèn)設(shè)置字的行間距為10個(gè)象素,根據(jù)字體大小計(jì)算文本對(duì)象內(nèi)字的寬度和高度;B、定位文本中的行位置,根據(jù)鼠標(biāo)在文本對(duì)象編輯狀態(tài)下點(diǎn)擊的坐標(biāo)的點(diǎn),再依據(jù)字的高度和行間距,計(jì)算光標(biāo)應(yīng)該處在那一行上,即光標(biāo)坐標(biāo)行的起始坐標(biāo)< =Y+字高 +行高<=行的終點(diǎn)坐標(biāo)時(shí),就把光標(biāo)的行坐標(biāo)rx確定下來;C、定位文本中的列坐標(biāo)位置,根據(jù)鼠標(biāo)在文本對(duì)象編輯狀態(tài)下點(diǎn)擊的坐標(biāo)的點(diǎn), 再依據(jù)字的寬度和字間距,來計(jì)算光標(biāo)應(yīng)該處在那一列上,即光標(biāo)坐標(biāo)列的起始坐標(biāo)< = χ+字寬+字間距<=列的終點(diǎn)坐標(biāo)時(shí),就把光標(biāo)的列坐標(biāo)C1確定下來;D、將行、列坐標(biāo)rx,cy傳給光標(biāo)繪制工作線程,定位并繪制出光標(biāo)所在的位置并顯示出來。步驟S4,若經(jīng)判斷出需要進(jìn)入編輯狀態(tài),則創(chuàng)建所述文本對(duì)象的鍵盤響應(yīng)事件,使其與系統(tǒng)的鍵盤事件一一對(duì)應(yīng),并等待接受鍵盤的輸入信息。上述的創(chuàng)建鍵盤響應(yīng)事件具體可以包括如下步驟1)、當(dāng)判斷出文本對(duì)象處在編輯狀態(tài)下,通過Windows系統(tǒng)的消息機(jī)制獲取鍵盤輸入字符,響應(yīng)系統(tǒng)鍵盤輸入事件;2)、取得鍵盤輸入的字符,根據(jù)當(dāng)前光標(biāo)所在的位置,把所鍵入的字符插入到光標(biāo)所在的字符位置;3)、判斷輸入的字符是否為空格,如果是就把空格符插入到光標(biāo)所在的字符位置;4)、判斷鍵盤信息是否為回車鍵,如果是就把回車鍵符插入到光標(biāo)所在的字符位置;5)、判斷鍵盤信息是否為退格鍵,如果是就把光標(biāo)前一個(gè)字符從文本對(duì)象中刪除;6)、判斷鍵盤信息是否為左右方向鍵,如果是就把光標(biāo)向前或向后移一個(gè)字符寬度的位置,并記錄光標(biāo)的當(dāng)前位置;7)、判斷鍵盤信息是否為上下方向鍵,如果是就把光標(biāo)向上或向下移一行行間距的寬度位置,并記錄光標(biāo)的當(dāng)前位置。在編輯狀態(tài)下并且已經(jīng)創(chuàng)建好所述文本對(duì)象的鍵盤響應(yīng)事件后,就可以直接接受鍵盤的輸入信息了,也就是說GDI/GDI+可以不需要通過額外的文本輸入窗口就可以直接進(jìn)行文本編輯了。另外,當(dāng)在編輯狀態(tài)下,鼠標(biāo)從文本對(duì)象有效范圍內(nèi)移動(dòng)到文本對(duì)象有效范圍之外,并且發(fā)生鼠標(biāo)的左鍵單擊事件時(shí),那么文本對(duì)象的有效狀態(tài)就變?yōu)?amp;1^,此時(shí)進(jìn)入非編輯狀態(tài)。在非編輯狀態(tài)下,文本對(duì)象的工作線程結(jié)束,不再繪制對(duì)象邊框外的斜線,同時(shí)不再繪制光標(biāo)線。與本發(fā)明的一種基于GDI/GDI+的虛擬文本編輯方法相對(duì)應(yīng)的,本發(fā)明還提供一種基于⑶I/⑶1+的虛擬文本編輯裝置,如圖3所示,包括文本對(duì)象創(chuàng)建模塊,用于創(chuàng)建一個(gè)GDI/GDI+的文本對(duì)象;與所述文本對(duì)象創(chuàng)建模塊相連接的鼠標(biāo)事件創(chuàng)建模塊,用于創(chuàng)建所述文本對(duì)象的鼠標(biāo)響應(yīng)事件,使其與系統(tǒng)的鼠標(biāo)事件一一對(duì)應(yīng);與所述鼠標(biāo)事件創(chuàng)建模塊相連接的編輯狀態(tài)創(chuàng)建模塊,用于創(chuàng)建所述文本對(duì)象的編輯狀態(tài),并根據(jù)所述鼠標(biāo)響應(yīng)事件判斷是否進(jìn)入該編輯狀態(tài);與所述編輯狀態(tài)創(chuàng)建模塊相連接的鍵盤事件創(chuàng)建模塊,用于當(dāng)進(jìn)入編輯狀態(tài)時(shí), 創(chuàng)建所述文本對(duì)象的鍵盤響應(yīng)事件,使其與系統(tǒng)的鍵盤事件一一對(duì)應(yīng),并等待接受鍵盤的輸入信息。優(yōu)選的,所述文本對(duì)象創(chuàng)建模塊還可以用于在創(chuàng)建一個(gè)GDI/GDI+的文本對(duì)象后, 記錄該文本對(duì)象的坐標(biāo)和大小,并根據(jù)所述坐標(biāo)和大小確定所述文本對(duì)象的有效范圍。另外,本發(fā)明的裝置還可以包括狀態(tài)轉(zhuǎn)換模塊,所述狀態(tài)轉(zhuǎn)換模塊用于進(jìn)入編輯狀態(tài)之后,當(dāng)判斷出鼠標(biāo)移動(dòng)到文本對(duì)象的有效范圍外并且發(fā)生鼠標(biāo)的左鍵單擊事件時(shí), 進(jìn)入非編輯狀態(tài)。優(yōu)選的,所述編輯狀態(tài)創(chuàng)建模塊中可以包括判斷模塊,所述判斷模塊用于當(dāng)判斷出鼠標(biāo)坐標(biāo)位于文本對(duì)象的有效范圍內(nèi)并且發(fā)生鼠標(biāo)的左鍵雙擊事件時(shí),進(jìn)入編輯狀態(tài), 否則進(jìn)入非編輯狀態(tài)。另外,所述編輯狀態(tài)創(chuàng)建模塊還可以包括斜線段繪制模塊與光標(biāo)繪制模塊;所述斜線段繪制模塊用于根據(jù)所述文本對(duì)象的坐標(biāo)和大小,在所述文本對(duì)象邊框的周圍畫上斜線段,并記錄所有斜線段的坐標(biāo)值;以及所述光標(biāo)繪制模塊用于在所述文本對(duì)象內(nèi)繪制一條光標(biāo),所述光標(biāo)的高度與所述文本對(duì)象內(nèi)字體的大小相對(duì)應(yīng)或相等。通過以上方案可以看出,本發(fā)明的基于⑶I/⑶1+的虛擬文本編輯方法及裝置,不需要通過額外的文本輸入窗口就可以在⑶I/⑶1+上實(shí)現(xiàn)文本編輯,彌補(bǔ)了⑶I/⑶1+不能直接編輯文本的缺點(diǎn),避免了使用其他方法實(shí)現(xiàn)本發(fā)明目的時(shí)所帶來的復(fù)雜計(jì)算和在計(jì)算字符寬高時(shí)產(chǎn)生的字符偏差的問題,也避免了由于額外的去開辟一個(gè)窗口和添加控件所產(chǎn)生的資源消耗,有效增加了 GDI/GDI+編輯文本的直觀性,增強(qiáng)了文本顯示和編輯時(shí)的準(zhǔn)確度,提高了系統(tǒng)性能。以上所述的本發(fā)明實(shí)施方式,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于GDI/GDI+的虛擬文本編輯方法,其特征在于,包括以下步驟 創(chuàng)建一個(gè)⑶I/⑶〗+的文本對(duì)象;創(chuàng)建所述文本對(duì)象的鼠標(biāo)響應(yīng)事件,使其與系統(tǒng)的鼠標(biāo)事件一一對(duì)應(yīng); 創(chuàng)建所述文本對(duì)象的編輯狀態(tài),并根據(jù)所述鼠標(biāo)響應(yīng)事件判斷是否進(jìn)入該編輯狀態(tài); 若進(jìn)入編輯狀態(tài),則創(chuàng)建所述文本對(duì)象的鍵盤響應(yīng)事件,使其與系統(tǒng)的鍵盤事件一一對(duì)應(yīng),并等待接受鍵盤的輸入信息。
2.根據(jù)權(quán)利要求1所述的基于GDI/GDI+的虛擬文本編輯方法,其特征在于,所述創(chuàng)建一個(gè)GDI/GDI+的文本對(duì)象后,記錄該文本對(duì)象的坐標(biāo)和大小,并根據(jù)所述坐標(biāo)和大小確定所述文本對(duì)象的有效范圍。
3.根據(jù)權(quán)利要求2所述的基于GDI/GDI+的虛擬文本編輯方法,其特征在于,所述根據(jù)所述鼠標(biāo)響應(yīng)事件判斷是否進(jìn)入編輯狀態(tài)的過程具體包括當(dāng)鼠標(biāo)坐標(biāo)位于文本對(duì)象的有效范圍內(nèi)并且發(fā)生鼠標(biāo)的左鍵雙擊事件時(shí),進(jìn)入編輯狀態(tài),否則進(jìn)入非編輯狀態(tài)。
4.根據(jù)權(quán)利要求2所述的基于GDI/GDI+的虛擬文本編輯方法,其特征在于,所述進(jìn)入編輯狀態(tài)之后還包括以下步驟當(dāng)鼠標(biāo)移動(dòng)到文本對(duì)象的有效范圍外并且發(fā)生鼠標(biāo)的左鍵單擊事件時(shí),進(jìn)入非編輯狀態(tài)。
5.根據(jù)權(quán)利要求3或4所述的基于GDI/GDI+的虛擬文本編輯方法,其特征在于,所述文本對(duì)象默認(rèn)為非編輯狀態(tài)。
6.根據(jù)權(quán)利要求2所述的基于GDI/GDI+的虛擬文本編輯方法,其特征在于,所述創(chuàng)建所述文本對(duì)象的編輯狀態(tài)的過程具體包括根據(jù)所述文本對(duì)象的坐標(biāo)和大小,在所述文本對(duì)象邊框的周圍畫上斜線段,記錄所有斜線段的坐標(biāo)值;以及在所述文本對(duì)象內(nèi)繪制一條光標(biāo),所述光標(biāo)的高度與所述文本對(duì)象內(nèi)字體的大小相對(duì)應(yīng)或相等。
7.一種基于⑶I/⑶1+的虛擬文本編輯裝置,其特征在于,包括 文本對(duì)象創(chuàng)建模塊,用于創(chuàng)建一個(gè)GDI/GDI+的文本對(duì)象;與所述文本對(duì)象創(chuàng)建模塊相連接的鼠標(biāo)事件創(chuàng)建模塊,用于創(chuàng)建所述文本對(duì)象的鼠標(biāo)響應(yīng)事件,使其與系統(tǒng)的鼠標(biāo)事件一一對(duì)應(yīng);與所述鼠標(biāo)事件創(chuàng)建模塊相連接的編輯狀態(tài)創(chuàng)建模塊,用于創(chuàng)建所述文本對(duì)象的編輯狀態(tài),并根據(jù)所述鼠標(biāo)響應(yīng)事件判斷是否進(jìn)入該編輯狀態(tài);與所述編輯狀態(tài)創(chuàng)建模塊相連接的鍵盤事件創(chuàng)建模塊,用于當(dāng)進(jìn)入編輯狀態(tài)時(shí),創(chuàng)建所述文本對(duì)象的鍵盤響應(yīng)事件,使其與系統(tǒng)的鍵盤事件一一對(duì)應(yīng),并等待接受鍵盤的輸入 fn息ο
8.根據(jù)權(quán)利要求7所述的基于GDI/GDI+的虛擬文本編輯裝置,其特征在于,所述文本對(duì)象創(chuàng)建模塊還用于在創(chuàng)建一個(gè)GDI/GDI+的文本對(duì)象后,記錄該文本對(duì)象的坐標(biāo)和大小, 并根據(jù)所述坐標(biāo)和大小確定所述文本對(duì)象的有效范圍。
9.根據(jù)權(quán)利要求8所述的基于GDI/GDI+的虛擬文本編輯裝置,其特征在于還包括狀態(tài)轉(zhuǎn)換模塊,所述狀態(tài)轉(zhuǎn)換模塊用于進(jìn)入編輯狀態(tài)之后,當(dāng)判斷出鼠標(biāo)移動(dòng)到文本對(duì)象的有效范圍外并且發(fā)生鼠標(biāo)的左鍵單擊事件時(shí),進(jìn)入非編輯狀態(tài); 和/或所述編輯狀態(tài)創(chuàng)建模塊中包括判斷模塊,所述判斷模塊用于當(dāng)判斷出鼠標(biāo)坐標(biāo)位于文本對(duì)象的有效范圍內(nèi)并且發(fā)生鼠標(biāo)的左鍵雙擊事件時(shí),進(jìn)入編輯狀態(tài),否則進(jìn)入非編輯狀態(tài)。
10.根據(jù)權(quán)利要求8所述的基于GDI/GDI+的虛擬文本編輯裝置,其特征在于,所述編輯狀態(tài)創(chuàng)建模塊包括斜線段繪制模塊與光標(biāo)繪制模塊;所述斜線段繪制模塊用于根據(jù)所述文本對(duì)象的坐標(biāo)和大小,在所述文本對(duì)象邊框的周圍畫上斜線段,記錄所有斜線段的坐標(biāo)值;所述光標(biāo)繪制模塊用于在所述文本對(duì)象內(nèi)繪制一條光標(biāo),所述光標(biāo)的高度與所述文本對(duì)象內(nèi)字體的大小相對(duì)應(yīng)或相等。
全文摘要
本發(fā)明提供一種基于GDI/GDI+的虛擬文本編輯方法及裝置,該方法包括以下步驟創(chuàng)建一個(gè)GDI/GDI+的文本對(duì)象;創(chuàng)建所述文本對(duì)象的鼠標(biāo)響應(yīng)事件,使其與系統(tǒng)的鼠標(biāo)事件一一對(duì)應(yīng);創(chuàng)建文本對(duì)象的編輯狀態(tài),并根據(jù)所述鼠標(biāo)響應(yīng)事件判斷是否進(jìn)入該編輯狀態(tài);若進(jìn)入編輯狀態(tài),則創(chuàng)建所述文本對(duì)象的鍵盤響應(yīng)事件,使其與系統(tǒng)的鍵盤事件一一對(duì)應(yīng),并等待接受鍵盤的輸入信息。本發(fā)明的方法及裝置,可以不需要通過額外的文本輸入窗口即可在GDI/GDI+上進(jìn)行文本編輯,避免了復(fù)雜計(jì)算和字符偏差,也避免了由于額外的去開辟一個(gè)窗口和添加控件所產(chǎn)生的資源消耗,有效增加了GDI/GDI+編輯文本的直觀性,提高了系統(tǒng)性能。
文檔編號(hào)G06F17/21GK102193905SQ20111013902
公開日2011年9月21日 申請(qǐng)日期2011年5月26日 優(yōu)先權(quán)日2011年5月26日
發(fā)明者尹顯用, 胡建華, 黃寶華 申請(qǐng)人:廣東威創(chuàng)視訊科技股份有限公司