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

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
Photoshop:調查免費試用和折扣選項Photoshop:調查免費試用和折扣選項Apr 14, 2025 am 12:06 AM

你可以通過以下方式以最經濟的方式獲得Photoshop的使用權:1.利用7天的免費試用期體驗軟件功能;2.尋找學生或教師折扣,以及季節性促銷;3.使用第三方網站上的優惠券;4.訂閱AdobeCreativeCloud的月度或年度計劃。

設計師的Photoshop:創建視覺概念設計師的Photoshop:創建視覺概念Apr 13, 2025 am 12:09 AM

在Photoshop中創建視覺概念可以通過以下步驟實現:1.創建新文檔,2.添加背景層,3.使用畫筆工具繪製基本形狀,4.調整顏色和亮度,5.添加文本和圖形,6.使用蒙版進行局部編輯,7.應用濾鏡效果,這些步驟幫助設計師從零開始構建完整的視覺作品。

Photoshop免費嗎?了解訂閱計劃Photoshop免費嗎?了解訂閱計劃Apr 12, 2025 am 12:11 AM

Photoshop不是免費的,但有幾種方式可以低成本或免費使用:1.免費試用期為7天,期間可體驗所有功能;2.學生和教師優惠可將成本減半,需提供學校證明;3.CreativeCloud套餐適合專業用戶,包含多種Adobe工具;4.PhotoshopElements和Lightroom為低成本替代方案,功能較少但價格更低。

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

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

Photoshop的核心目的:創意圖像設計Photoshop的核心目的:創意圖像設計Apr 10, 2025 am 09:29 AM

Photoshop在創意圖像設計中的核心用途是其強大的功能和靈活性。 1)它允許設計師通過圖層、蒙版和濾鏡將創意轉化為視覺現實。 2)基本用法包括裁剪、調整大小和顏色校正。 3)高級用法如圖層樣式、混合模式和智能對象可創建複雜效果。 4)常見錯誤包括圖層管理不當和濾鏡使用過度,可通過整理圖層和合理使用濾鏡解決。 5)性能優化和最佳實踐包括合理使用圖層、定期保存文件和使用快捷鍵。

網頁設計的Photoshop:UI/UX的高級技術網頁設計的Photoshop:UI/UX的高級技術Apr 08, 2025 am 12:19 AM

Photoshop在網頁設計中可用於創建高保真原型、設計UI元素和模擬用戶交互。 1.使用圖層、蒙版和智能對象進行基礎設計。 2.通過動畫和時間線功能模擬用戶交互。 3.利用腳本自動化設計過程,提高效率。

新手篇:利用ps筆刷給字體添加裂紋效果(分享)新手篇:利用ps筆刷給字體添加裂紋效果(分享)Apr 07, 2025 am 06:21 AM

之前的文章《一步一步教你使用ps將盤子圖片添加印花效果(收藏)》中,給大家介紹了一種小技巧,怎麼使用ps將盤子圖片添加印花效果。下面本篇文章給大家介紹怎麼利用ps筆刷給字體添加裂紋效果,我們一起看看怎麼做。

Photoshop高級排版:創建令人驚嘆的文本效果Photoshop高級排版:創建令人驚嘆的文本效果Apr 07, 2025 am 12:15 AM

在Photoshop中,可以通過圖層樣式和濾鏡創建文字效果。 1.創建新文檔並添加文字。 2.應用圖層樣式如陰影和外發光。 3.使用濾鏡如波浪效果,並添加斜面和浮雕效果。 4.使用蒙版調整效果範圍和強度,以優化文字效果的視覺衝擊力。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3 Mac版

SublimeText3 Mac版

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

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能