Heim Web-Frontend PS-Tutorial Durch die Implementierung chinesischer Eingaben in ein leeres Formular unter C# kann ein PS-ähnliches Texttool implementiert werden

Durch die Implementierung chinesischer Eingaben in ein leeres Formular unter C# kann ein PS-ähnliches Texttool implementiert werden

Feb 15, 2017 am 10:23 AM

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!

Erklärung dieser Website
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

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)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie benutze ich Photoshop zum Erstellen von Social -Media -Grafiken? Wie benutze ich Photoshop zum Erstellen von Social -Media -Grafiken? Mar 18, 2025 pm 01:41 PM

Die Artikel detailliert mit Photoshop für Social -Media -Grafiken, Abdeckungen von Setup, Design -Tools und Optimierungstechniken. Es betont Effizienz und Qualität bei der Grafikkreation.

Was ist der Grund, warum PS immer wieder Laden zeigt? Was ist der Grund, warum PS immer wieder Laden zeigt? Apr 06, 2025 pm 06:39 PM

PS "Laden" Probleme werden durch Probleme mit Ressourcenzugriff oder Verarbeitungsproblemen verursacht: Die Lesegeschwindigkeit von Festplatten ist langsam oder schlecht: Verwenden Sie Crystaldiskinfo, um die Gesundheit der Festplatte zu überprüfen und die problematische Festplatte zu ersetzen. Unzureichender Speicher: Upgrade-Speicher, um die Anforderungen von PS nach hochauflösenden Bildern und komplexen Schichtverarbeitung zu erfüllen. Grafikkartentreiber sind veraltet oder beschädigt: Aktualisieren Sie die Treiber, um die Kommunikation zwischen PS und der Grafikkarte zu optimieren. Dateipfade sind zu lang oder Dateinamen haben Sonderzeichen: Verwenden Sie kurze Pfade und vermeiden Sie Sonderzeichen. Das eigene Problem von PS: Installieren oder reparieren Sie das PS -Installateur neu.

Wie bereite ich Bilder für das Web mithilfe von Photoshop vor (optimieren Sie die Dateigröße, Auflösung)? Wie bereite ich Bilder für das Web mithilfe von Photoshop vor (optimieren Sie die Dateigröße, Auflösung)? Mar 18, 2025 pm 01:35 PM

In Artikeln wird die Optimierung von Bildern für das Web mithilfe von Photoshop erläutert, wobei der Schwerpunkt auf Dateigröße und -auflösung liegt. Das Hauptproblem ist die Ausgleich von Qualität und Ladezeiten.

Wie bereite ich Bilder für den Druck mit Photoshop (Auflösung, Farbprofile) vor? Wie bereite ich Bilder für den Druck mit Photoshop (Auflösung, Farbprofile) vor? Mar 18, 2025 pm 01:36 PM

Der Artikel führt zum Vorbereiten von Bildern für den Druck in Photoshop und konzentriert sich auf Auflösung, Farbprofile und Schärfe. Es wird argumentiert, dass 300 pPI- und CMYK -Profile für Qualitätsdrucke unerlässlich sind.

Was sind die häufigsten Fragen zum Exportieren von PDF auf PS Was sind die häufigsten Fragen zum Exportieren von PDF auf PS Apr 06, 2025 pm 04:51 PM

Häufig gestellte Fragen und Lösungen beim Exportieren von PS als PDF: Schriftbettungsprobleme: Überprüfen Sie die Option "Schriftart", wählen Sie "Einbetten" oder konvertieren Sie die Schriftart in eine Kurve (Pfad). Farbabweichungsproblem: Umwandeln Sie die Datei in den CMYK -Modus und passen Sie die Farbe an. Das direkte Exportieren mit RGB erfordert eine psychologische Vorbereitung auf Vorschau und Farbabweichung. Auflösungs- und Dateigrößesprobleme: Wählen Sie die Lösung gemäß den tatsächlichen Bedingungen oder verwenden Sie die Komprimierungsoption, um die Dateigröße zu optimieren. Problem mit Spezialeffekten: Vor dem Exportieren oder Abwägen der Vor- und Nachteile verschmelzen (flach) Schichten.

Wie verwende ich Photoshops Videobearbeitungsfunktionen? Wie verwende ich Photoshops Videobearbeitungsfunktionen? Mar 18, 2025 pm 01:37 PM

In dem Artikel wird erläutert, wie Photoshop zum Bearbeiten von Videoen verwendet wird, Schritte zum Importieren, Bearbeiten und Exportieren von Videos sowie zum Hervorheben von Schlüsselfunktionen wie Timeline -Panel, Videoebenen und Effekten.

Wie erstelle ich animierte GIFs in Photoshop? Wie erstelle ich animierte GIFs in Photoshop? Mar 18, 2025 pm 01:38 PM

In Artikel werden animierte GIFs in Photoshop erstellt und optimiert, einschließlich Hinzufügen von Frames zu vorhandenen GIFs. Der Schwerpunkt liegt auf dem Ausgleich von Qualität und Dateigröße.

So setzen Sie den Kennwortschutz für Exportieren von PDF auf PS So setzen Sie den Kennwortschutz für Exportieren von PDF auf PS Apr 06, 2025 pm 04:45 PM

PDF mit Passwort geschützt in Photoshop exportieren: Öffnen Sie die Bilddatei. Klicken Sie auf "Datei" & gt; "Export" & gt; "Exportieren Sie als PDF". Stellen Sie die Option "Sicherheit" fest und geben Sie dasselbe Passwort zweimal ein. Klicken Sie auf "Exportieren", um eine PDF -Datei zu generieren.

See all articles