suchen
HeimWeb-FrontendPS-TutorialDurch die Implementierung chinesischer Eingaben in ein leeres Formular unter C# kann ein PS-ähnliches Texttool implementiert werden

Chinesische Eingabe auf einem leeren Formular unter C#

Schlüsselwörter: PS-ähnliches Texttool, chinesische Eingabe Wiederholtes Abfangen von Chinesisch

Vor kurzem habe ich nach einem PS-ähnlichen Texttool gesucht und viele Leute gefragt. Endlich hat sich die harte Arbeit gelohnt Schreiben Sie es auf, damit es jeder besprechen kann.

Das leere Fenster in C# ist nein Egal was. Auch wenn this.ImeMode= ImeMode.NoControl eingestellt ist, kann das Eingabemethoden-Aufzeichnungsfenster nicht geöffnet werden. Ich habe dem Moderator Zhou Xuefeng und Riquel_Dong einige Fragen gestellt Moderator für ihren Rat. Ich habe die API verwendet: ImmAssociateContext(IntPtr hWnd, IntPtr hIMC); Ihre Funktion besteht darin, die Eingabe mit dem angegebenen Fenster zu verknüpfen >

Der Code lautet wie folgt:


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


{


ImmAssociateContext(this.Handle, m_hImc);


}



Jetzt kann die Eingabemethode aufgerufen werden. Es ist jedoch ein neues Problem aufgetreten, wie die Wörter in das Aufnahmefenster der Eingabemethode gelangen.

Wenn die Eingabemethode zur Eingabe von Text aktiviert ist, wird die WM_IME_CHAR-Nachricht gesendet, indem wir diese Nachricht verarbeiten


Sie können die IMM-Funktion verwenden: ImmGetCompositionString(IntPtr hIMC, int dwIndex, StringBuilder lpBuf, int dwBufLen); um die chinesischen Zeichen oder den NUICODE-Typ zu erhalten Natürlich werden wir sie hier nicht studieren. Sprechen Sie nur über chinesische Schriftzeichen Das Extrahieren von Zeichen lautet wie folgt:


case WM_IME_CHAR:


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


size += sizeof(Char);

ImmGetCompositionString( m_hImc, GCS_RESULTSTR, str, size);


sb.Append(str.ToString());


MessageBox.Show(str.ToString());


intoText();// Drucken. Text


                                               >


                                                                                                  🎜>

OK, . Nach dem Testen habe ich festgestellt, dass es sich bei allen gedruckten Wörtern um wiederholte Wörter handelt „People“, was ausgedruckt wird „Serve the People“. Oh mein Gott, es gibt ein Problem. Wo ist es?


Ich habe MSDN überprüft . Es gibt diese Beschreibung von WM_IME_CHAR:


Die WM_IME_CHAR-Nachricht enthält ein Doppelbyte-Zeichen und die Anwendung übergibt diese Nachricht an DefWindowProc


Ist das ein Problem? Da kommt es ins Spiel. Es ist ein Problem, eine Nachricht zweimal zu senden.


Nachdem ich eine Online-Diskussion gelesen hatte, kam ich auf eine Lösung: Urteil hinzufügen


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


{


}


Test endlich gibt es keine Probleme


Code-Post



unter Verwendung von System;

unter Verwendung von System.Collections .Generic;

unter Verwendung von System.ComponentModel;

unter Verwendung von System.Drawing;

unter Verwendung von System.Data;

unter Verwendung von System.Text;

mit System.Windows.Forms;


mit System.Runtime .InteropServices;

Namespace WindowsApplication2

{

öffentliche Teilklasse UserControl1: UserControl

{


        IntPtr m_hImc;


        bool isShowChina = false;

        public const int WM_IME_SETCONTEXT =. 0x0281;


        private const int WM_IME_CHAR = 0x0286;


        private const int WM_CHAR = 0x0102;


        private const int WM_IME_COMPOSITION = 0x010F;


        private const int GCS_COMPSTR = 0x0008;


        [DllImport("Imm32.dll" )]

        public static extern IntPtr ImmGetContext(IntPtr hWnd);


        [DllImport("Imm32.dll")]

        public statischer externer intptr musiciateContext (intptr hwnd, intptr himc); , int dwIndex, StringBuilder  lpBuf, int dwBufLen);


        private int GCS_RESULTSTR = 0x0800;



        private const int HC_ACTION = 0;


       private const int PM_REMOVE  = 0x0001;


        StringBuilder sb = new StringBuilder();



        Font Schriftart = new Font("宋体", 14, FontStyle.Regular);

        public UserControl1()

        {

            InitializeComponent();

            

        }

        private void UserControl1_Load(object sender, EventArgs e)

        {

          m_hImc = ImmGetContext(this.Handle);

        }

        geschützt override void WndProc(ref Message m)

        {

            base.WndProc(ref m);

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

            {

              ImmAssociateContext(this.Handle, m_hImc);

            

           }

            Schalter (m. Msg)

            {

                case WM_CHAR:

                  KeyEventArgs e = new. KeyEventArgs(((Keys)((int)((long)m.WPa Widder))) | ModifierKeys);

                    char a = (char)e.KeyData; //英文

                    sb.Append(a);

                    intoText();

                    isShowChina = false;

                    Pause;

case WM_IME_CHAR:

                    中文

                                                     CS_COMPSTR, null, 0);

                        size += sizeof(Char);

                        ImmGetCompositionString(m_hImc, GCS_RESULTSTR, str, size);

                      sb.Append(str.ToString());

                       MessageBox.Show(str.ToString()) ;

                        intoText();

isshowchina = true;

}

Pause;                                                                                                                                               {>

{

Grafiken g = this.creategraphics ();

G.Drawstring (sb.tostring (), Schriftart, Brushes.Black, 10, 10); >

                                         Implementieren Sie PS-ähnlichen Text Für verwandte Artikel beachten Sie bitte die chinesische PHP-Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Photoshop: Untersuchung kostenloser Versuche und RabattoptionenPhotoshop: Untersuchung kostenloser Versuche und RabattoptionenApr 14, 2025 am 12:06 AM

Sie können den Zugriff auf Photoshop auf die wirtschaftlichste Weise erhalten: 1. Erleben Sie die Softwarefunktionen mit einer 7-tägigen kostenlosen Testversion; 2. Finden Sie Rabatte für Schüler oder Lehrer sowie saisonale Aktionen; 3. Verwenden Sie Gutscheine auf Websites von Drittanbietern. V.

Photoshop für Designer: Erstellen visueller KonzeptePhotoshop für Designer: Erstellen visueller KonzepteApr 13, 2025 am 12:09 AM

Das Erstellen von visuellen Konzepten in Photoshop kann in den folgenden Schritten erreicht werden: 1. Erstellen Sie ein neues Dokument, 2. Fügen Sie eine Hintergrundschicht hinzu, 3. Zeichnen Sie das Pinsel -Tool, um grundlegende Formen zu zeichnen. Anpassen Sie Farben und Helligkeit, 5. Text und Grafiken hinzufügen, 6. Verwenden Sie Masken für lokale Bearbeitung.

Ist Photoshop kostenlos? Abonnementpläne verstehenIst Photoshop kostenlos? Abonnementpläne verstehenApr 12, 2025 am 12:11 AM

Photoshop ist nicht kostenlos, aber es gibt verschiedene Möglichkeiten, es zu kostengünstig oder kostenlos zu verwenden: 1. Die kostenlose Testzeit beträgt 7 Tage, und Sie können alle Funktionen in diesem Zeitraum erleben. 2. Rabatte für Schüler und Lehrer können die Kosten um die Hälfte senken, und schulischer Beweis ist erforderlich. 3. Das CreativeCloud -Paket ist für professionelle Benutzer geeignet und enthält eine Vielzahl von Adobe -Tools. 4. Photoshopelements und Lightroom sind kostengünstige Alternativen mit weniger Funktionen, aber niedrigeren Preisen.

Der Wert von Photoshop: Abwägung der Kosten gegen seine FunktionenDer Wert von Photoshop: Abwägung der Kosten gegen seine FunktionenApr 11, 2025 am 12:02 AM

Photoshop ist die Investition wert, da sie leistungsstarke Funktionen und eine breite Palette von Anwendungsszenarien bietet. 1) Zu den Kernfunktionen gehören Bildbearbeitung, Schichtmanagement, Produktion von Spezialeffekten und Farbanpassungen. 2) Geeignet für professionelle Designer und Fotografen, aber Amateure können Alternativen wie GIMP in Betracht ziehen. 3) Abonnieren Sie AdobecreativeCloud können nach Bedarf verwendet werden, um hohe einmalige Ausgaben zu vermeiden.

Der Kernzweck von Photoshop: Kreatives BilddesignDer Kernzweck von Photoshop: Kreatives BilddesignApr 10, 2025 am 09:29 AM

Die Kernverwendung von Photoshop im kreativen Bilddesign ist seine leistungsstarke Funktionalität und Flexibilität. 1) Es ermöglicht Designer, Kreativität in visuelle Realität durch Schichten, Masken und Filter zu verwandeln. 2) Zu den grundlegenden Verwendungen gehören die Anbaus, Größe und Farbkorrektur. 3) Fortgeschrittene Verwendungen wie Ebenenstile, Mischmodi und intelligente Objekte können komplexe Effekte erzielen. 4) Zu den häufigen Fehlern gehören eine unsachgemäße Schichtverwaltung und eine übermäßige Verwendung von Filtern, die durch das Organisieren von Schichten und die Verwendung von Filtern angemessen gelöst werden können. 5) Leistungsoptimierung und Best Practices umfassen die rationale Verwendung von Ebenen, regelmäßiges Speichern von Dateien und die Verwendung von Abkürzungsschlüssel.

Photoshop für Webdesign: Erweiterte Techniken für UI/UXPhotoshop für Webdesign: Erweiterte Techniken für UI/UXApr 08, 2025 am 12:19 AM

Photoshop kann im Webdesign verwendet werden, um Prototypen mit hohem Fidelity, Design-UI-Elemente und Simulation von Benutzerinteraktionen zu erstellen. 1. Verwenden Sie Schichten, Masken und intelligente Objekte für das grundlegende Design. 2. Simulieren Sie die Benutzerinteraktion durch Animations- und Timeline -Funktionen. 3.. Verwenden Sie Skripte, um den Entwurfsprozess zu automatisieren und die Effizienz zu verbessern.

Neulingsartikel: Verwenden Sie die PS -Pinsel, um der Schriftzündung Crackeffekte hinzuzufügen (Share)Neulingsartikel: Verwenden Sie die PS -Pinsel, um der Schriftzündung Crackeffekte hinzuzufügen (Share)Apr 07, 2025 am 06:21 AM

Im vorherigen Artikel "Unterrichten Sie Schritt für Schritt, um Plattenbildern mit PS (Favoriten) Druckeffekte hinzuzufügen, habe ich einen kleinen Trick eingeführt, um PS zu verwenden, um Plattenbilder mit PS zu Druckeffekten zu hindern. In dem folgenden Artikel wird Ihnen vorgestellt, wie Sie die PS -Pinsel verwenden, um der Schriftrisseffekte Risseffekte zu verleihen. Schauen wir uns an, wie es geht.

Photoshop Erweiterte Typografie: Erstellen atemberaubender TexteffektePhotoshop Erweiterte Typografie: Erstellen atemberaubender TexteffekteApr 07, 2025 am 12:15 AM

In Photoshop können Sie Texteffekte über Ebenenstile und Filter erstellen. 1. Erstellen Sie ein neues Dokument und fügen Sie Text hinzu. 2. Tragen Sie Ebenenstile wie Schatten und äußeres Glühen auf. 3. Verwenden Sie Filter wie Welleneffekte und fügen Sie Kegel- und Entlastungseffekte hinzu. 4. Verwenden Sie Masken, um den Effektbereich und die Intensität anzupassen, um die visuelle Auswirkung des Texteffekts zu optimieren.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools