首頁 web前端 PS教程 C#下實作空白窗體上中文輸入,可以實現類PS的文字工具

C#下實作空白窗體上中文輸入,可以實現類PS的文字工具

Feb 15, 2017 am 10:23 AM

C#下實現空白窗體上中文輸入

關鍵字:類PS的文字工具,中文輸入.重複截取中文

  

最近在研究做一個類PS的文字工具N多的資料,問了N多個人,總算功夫不負有人心.終於給弄出來了.寫出來給大家一起討論.

 

在空白窗體上打開輸入法,在C#裡的空白視窗是無論如何也是打不開輸入法.設定了this.ImeMode= ImeMode.NoControl也是無法開啟輸入法的錄影視窗.去Microsoft 開發論壇上問了一些問題.感謝週雪峰版主與Riquel_Dong 版主給的指點.用了API函數: ImmAssociateContext(IntPtr hWnd, IntPtr hIMC);終於把輸入法給調了出來,它的功能是把輸入與指定的視窗進行關聯.




:

f (m.Msg == WM_IME_SETCONTEXT && m.WParam.ToInt32() == 1)


ImmAssociateContext(this.Handle, m_hImc );

}


 呢.


當打開輸入法輸入文字時,會發送WM_IME_CHAR的消息.我們在這個消息下處理下就可以得到漢字了

: IntPtr hIMC, int dwIndex, StringBuilder  lpBuf, int dwBufLen);取得錄影視窗上輸入的漢字或NUICODE類別的字.當然,這裡就不研究別的了.只說漢字問題.取字的代碼如下:

case WM_IME_CHAR:


     int size = ImmGetCompositionString(m_hImc, GCS_COMPSTR, null, 0);


   izeof( Char);


                      


                        sb.Append(str.To                MessageBox.Show( str.ToString());


                   

                        isShowChina = true;


                  

       


                    break;

OK,.好像是大功告服務計劃」我的天啊,問題出在哪裡呢.


去查了一下MSDN.對WM_IME_CHAR有這樣的說明:


ble and the application passes this message to DefWindowProc


是不是問題就出在這裡了.是發送訊息兩次的問題.

,

方案:加上判斷

if (m.WParam.ToInt32() == PM_REMOVE)


測試.終於沒有問題了


 代碼貼文上


onentModel;

using System .Drawing;


using System.Data;

using System.Text;

using System.Windows.Forms;

using System.Runtime.InteropServices;Windows.Forms;

using System.Runtime.InteropServices; public partial class UserControl1 : UserControl

    {


        IntPtr m_hImc;


     bool isShowChina = false;

 


      private const int WM_IME_CHAR = 0x0286;


    

        private const int WM_IME_COMPOSITION = 0x010F;


           [DllImport (" Imm32.dll")]

        public static extern IntPtr ImmGetContext(IntPtr hWnd);


        [DllImport("Imm32.dll")]

        public static extern IntPtr ImmAssociateContext(IntPtr hndIM)Int     [DllImport(" imm32 .dll")]

        static extern int ImmGetCompositionString( IntPtr hIMC, int dwIndex, StringBuilder lpBuf, int dwBufLen);


        private int GRESCS   private const HC_ ACTION = 0;


       private const PM_REMOVE = 0x0001 ;



        StringBuilder sb = new StringBuilder();


 ,

       public UserControl1()

        {

InitializeComponent ( );

            


        }


       {

           m_hI mc = ImmGetContext(this.Handle);

       }

受保護訊息m)

        {

            base.WndProc(ref m);

if  == 1)

          {

                ImmAssociateContext(this.Handle, m_hImc ) ;


             

            }

    

                case WM_ CHAR:

                 對應   Key | ModifierKeys);

                    char a = (char)e.KeyData; //           sb.Append(a);

                    isShowChina = false;

                   break;

                      if (m.WParam.ToInt32() == PM_REMOVE ) //如果不做這個判斷,會印出重複的中文

                    {

                               int size = Imm GetCompositionString(m_hImc, GCS_COMPSTR, null, 0); sizeof (Char);

                        ImmGetCompositionString(m_hI      sb.Append(str.ToString());

                      MessageBox.Show  intoText();

                        isShowChina = true;

              

                    break;

              ///

        /// 列印文字

        ///

        /// intoText()//

        {

           Graphics g  = this.CreateGraphics();

  10);

         

        }

    }

}


更多C#下實現空白窗體上中文輸入,可以實現類PS的文字工具 相關文章請關注PHP中文網!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PS導出PDF如何設置密碼保護 PS導出PDF如何設置密碼保護 Apr 06, 2025 pm 04:45 PM

在 Photoshop 中導出帶密碼保護的 PDF:打開圖像文件。點擊“文件”>“導出”>“導出為 PDF”。設置“安全性”選項,兩次輸入相同的密碼。點擊“導出”生成 PDF 文件。

PS導出PDF有哪些常見問題 PS導出PDF有哪些常見問題 Apr 06, 2025 pm 04:51 PM

導出PS為PDF時常見問題及解決方法:字體嵌入問題:勾選"字體"選項,選擇"嵌入",或將字體轉換成曲線(路徑)。顏色偏差問題:將文件轉換成CMYK模式,並進行校色;直接用RGB導出需做好預覽和顏色偏差的心理準備。分辨率和文件大小問題:根據實際情況選擇分辨率,或使用壓縮選項優化文件體積。特殊效果問題:導出前將圖層合併(扁平化),或權衡利弊。

PS一直顯示正在載入是什麼原因? PS一直顯示正在載入是什麼原因? Apr 06, 2025 pm 06:39 PM

PS“正在載入”問題是由資源訪問或處理問題引起的:硬盤讀取速度慢或有壞道:使用CrystalDiskInfo檢查硬盤健康狀況並更換有問題的硬盤。內存不足:升級內存以滿足PS對高分辨率圖片和復雜圖層處理的需求。顯卡驅動程序過時或損壞:更新驅動程序以優化PS和顯卡之間的通信。文件路徑過長或文件名有特殊字符:使用簡短的路徑和避免使用特殊字符。 PS自身問題:重新安裝或修復PS安裝程序。

ps鋼筆工具怎麼用 ps鋼筆工具怎麼用 Apr 06, 2025 pm 10:15 PM

鋼筆工具是創建精確路徑和形狀的工具,使用方法為:選擇鋼筆工具(P)。設置路徑、填充、描邊和形狀選項。單擊創建錨點,拖動形成曲線,鬆開創建錨點。按 Ctrl/Cmd Alt/Opt 刪除錨點,拖動移動錨點,單擊調整曲線。單擊第一個錨點閉合路徑創建形狀,雙擊最後一個錨點創建開放路徑。

如何加快PS的載入速度? 如何加快PS的載入速度? Apr 06, 2025 pm 06:27 PM

解決 Photoshop 啟動慢的問題需要多管齊下,包括:升級硬件(內存、固態硬盤、CPU);卸載過時或不兼容的插件;定期清理系統垃圾和過多的後台程序;謹慎關閉無關緊要的程序;啟動時避免打開大量文件。

PS執行操作時一直顯示正在載入如何解決? PS執行操作時一直顯示正在載入如何解決? Apr 06, 2025 pm 06:30 PM

PS卡在“正在載入”?解決方法包括:檢查電腦配置(內存、硬盤、處理器)、清理硬盤碎片、更新顯卡驅動、調整PS設置、重新安裝PS,以及養成良好的編程習慣。

專業人士的Photoshop:高級編輯和工作流技術 專業人士的Photoshop:高級編輯和工作流技術 Apr 05, 2025 am 12:15 AM

Photoshop的高級編輯技巧包括頻率分離和HDR合成,優化工作流程可通過自動化實現。 1)頻率分離技術分離圖像的紋理和顏色細節。 2)HDR合成增強圖像的動態範圍。 3)自動化工作流程提高效率並確保一致性。

Photoshop的價值:權衡成本與其功能 Photoshop的價值:權衡成本與其功能 Apr 11, 2025 am 12:02 AM

Photoshop值得投資,因為它提供了強大的功能和廣泛的應用場景。 1)核心功能包括圖像編輯、圖層管理、特效製作和色彩調整。 2)適合專業設計師和攝影師,但業餘愛好者可考慮替代品如GIMP。 3)訂閱AdobeCreativeCloud可按需使用,避免一次性高額支出。

See all articles