ホームページ ウェブフロントエンド PS チュートリアル C# で空白のフォームに中国語入力を実装すると、PS のようなテキスト ツールを実装できる

C# で空白のフォームに中国語入力を実装すると、PS のようなテキスト ツールを実装できる

Feb 15, 2017 am 10:23 AM

C# での空白のフォームへの中国語入力

キーワード: PS 風のテキスト ツール、中国語入力の繰り返し

最近、PS 風のテキスト ツールを作成するために研究しています。 N 件の情報を収集し、N 人に質問した結果、ようやく結論を出しました。

で入力方法を開きます。空白のフォームと C# を使用します。その中の空白のウィンドウは、this.ImeMode= ImeMode.NoControl が設定されていても、入力メソッドを開くことができないことを意味します。Microsoft 開発フォーラムに行きました。モデレータの Zhou Xuefeng と 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メッセージが送信されます。中国語の文字を取得できますこのメッセージを処理すると

IMM 関数を使用できます: ImmGetCompositionString( IntPtr hIMC, int dwIndex, StringBuilder lpBuf, int dwBufLen); もちろん、入力フォームに入力された中国語の文字または NUICODE タイプの文字を取得します。ここでは他に何も勉強しません。漢字の問題だけです。

単語を取得するコードは次のとおりです:


case WM_IME_CHAR:


int size = ImmGetCompositionString(m_hImc, GCS_COM PSTR, null, 0);


size += sizeof( Char);


m_hImc、GCS_RESULTSTR、str、サイズ);

sb.Append(str.ToString());

MessageBox.Show(str.ToString());


str. isShowChina = true;



休憩; サービス「おやおや、何が問題ですか?」


MSDN を確認したところ、WM_IME_CHAR について次の説明がありました:


WM_IME_CHAR メッセージ全角文字が含まれており、アプリケーションはこのメッセージを DefWindowProc に渡します


これは問題ですか? メッセージを 2 回送信するという問題です。


解決策: 判定を追加します


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


{


}


テスト。最後に、コードポストに問題はありません


using System;

using System.Collections.Generic;


System.ComponentModel を使用します。

System .Drawingの使用;

System.Dataの使用;

System.Textの使用;

System.Windows.Formsの使用;

System.Runtime.InteropServicesの使用;


名前空間WindowsApplication2

{

パブリック部分クラス 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 static extern IntPtr ImmAssociateContext(IntPtr hWnd, IntPtr hIMC);


[DllImport ("imm32.dll")]

static extern int ImmGetCompositionString( 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 font = new Font("宋体", 14, FontStyle. Regular);

public UserControl1()

{

InitializeComponent();

}


private void UserControl1_Load(object sender, EventArgs e)

{

m_hImc = ImmGetContext(this.Handle);

}

protected 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) ;

}

switch (m.Msg)

{

case WM_CHAR:

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

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

sb.Append(a);

intoText();

isShowChina = false;

break;

case WM_IME_CHAR:


if (m.WParam.ToInt32() == PM_REMOVE ) //如果不做这个判断.会打印出重复的中文

StringBuilder str = new StringBuilder();

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();

C Isshowchina = TRUE;

}

//// & gt;

//// & lt;/概要 & gt;

Private void intotext () // {

graphics g = this.creategraphics ();

g.Drawstring (sb.tostring (), font, Brushs.black, 10, 10);

}

}

C# で空白のフォームにさらに中国語を入力するには、PS のようなテキスト ツールを実装できます。 関連記事については、PHP 中国語 Web サイトに注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ソーシャルメディアグラフィックを作成するためにPhotoshopを使用するにはどうすればよいですか? ソーシャルメディアグラフィックを作成するためにPhotoshopを使用するにはどうすればよいですか? Mar 18, 2025 pm 01:41 PM

この記事では、ソーシャルメディアグラフィックスのPhotoshop、セットアップ、設計ツール、最適化技術をカバーすることを使用して詳細に説明しています。グラフィック作成の効率と品質を強調しています。

PSが荷重を見せ続ける理由は何ですか? PSが荷重を見せ続ける理由は何ですか? Apr 06, 2025 pm 06:39 PM

PSの「読み込み」の問題は、リソースアクセスまたは処理の問題によって引き起こされます。ハードディスクの読み取り速度は遅いか悪いです。CrystaldiskInfoを使用して、ハードディスクの健康を確認し、問題のあるハードディスクを置き換えます。不十分なメモリ:高解像度の画像と複雑な層処理に対するPSのニーズを満たすためのメモリをアップグレードします。グラフィックカードドライバーは時代遅れまたは破損しています:ドライバーを更新して、PSとグラフィックスカードの間の通信を最適化します。ファイルパスが長すぎるか、ファイル名に特殊文字があります。短いパスを使用して特殊文字を避けます。 PS独自の問題:PSインストーラーを再インストールまたは修理します。

Photoshop(ファイルサイズ、解像度を最適化)を使用してWeb用の画像を準備するにはどうすればよいですか? Photoshop(ファイルサイズ、解像度を最適化)を使用してWeb用の画像を準備するにはどうすればよいですか? Mar 18, 2025 pm 01:35 PM

記事では、ファイルのサイズと解像度に焦点を当てたPhotoshopを使用して、Webの画像の最適化について説明します。主な問題は、品質と負荷時間のバランスをとることです。

Photoshop(解像度、カラープロファイル)を使用して、印刷用の画像を準備するにはどうすればよいですか? Photoshop(解像度、カラープロファイル)を使用して、印刷用の画像を準備するにはどうすればよいですか? Mar 18, 2025 pm 01:36 PM

この記事は、Photoshopで印刷するための画像の準備を導き、解像度、色プロファイル、シャープネスに焦点を当てています。 300 PPIおよびCMYKプロファイルが高品質のプリントに不可欠であると主張しています。

PSでPDFをエクスポートすることに関する一般的な質問は何ですか PSでPDFをエクスポートすることに関する一般的な質問は何ですか Apr 06, 2025 pm 04:51 PM

PSをPDFとしてエクスポートする際のよくある質問とソリューション:フォント埋め込み問題:「フォント」オプションを確認し、「埋め込み」を選択するか、フォントを曲線(パス)に変換します。色偏差の問題:ファイルをCMYKモードに変換し、色を調整します。 RGBで直接エクスポートするには、プレビューと色の逸脱のための心理的な準備が必要です。解像度とファイルサイズの問題:実際の条件に応じて解像度を選択するか、圧縮オプションを使用してファイルサイズを最適化します。特殊効果の問題:エクスポートする前にレイヤーをマージ(フラットン)するか、長所と短所を比較検討します。

Photoshopのビデオ編集機能を使用するにはどうすればよいですか? Photoshopのビデオ編集機能を使用するにはどうすればよいですか? Mar 18, 2025 pm 01:37 PM

この記事では、ビデオ編集にPhotoshopを使用する方法、ビデオのインポート、編集、エクスポートの手順の詳細、およびタイムラインパネル、ビデオレイヤー、エフェクトなどの重要な機能の強調表示について説明します。

PhotoshopでアニメーションGIFを作成するにはどうすればよいですか? PhotoshopでアニメーションGIFを作成するにはどうすればよいですか? Mar 18, 2025 pm 01:38 PM

記事では、既存のGIFにフレームを追加するなど、PhotoshopでアニメーションGIFの作成と最適化について説明します。主な焦点は、品質とファイルサイズのバランスをとることです。

PSのエクスポートPDFのパスワード保護を設定する方法 PSのエクスポートPDFのパスワード保護を設定する方法 Apr 06, 2025 pm 04:45 PM

Photoshopでパスワードで保護されたPDFをエクスポート:画像ファイルを開きます。 [ファイル]&gtをクリックします。 「エクスポート」> 「PDFとしてのエクスポート」。 「セキュリティ」オプションを設定し、同じパスワードを2回入力します。 [エクスポート]をクリックして、PDFファイルを生成します。

See all articles