Created
April 15, 2012 06:03
-
-
Save biac/2390340 to your computer and use it in GitHub Desktop.
Demo1Page.ToKatakanaButton_Click_1() / ToHiraganaButton_Click_1()
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private void ToKatakanaButton_Click_1(object sender, RoutedEventArgs e) | |
{ | |
this.TextArea.Text = NativeMethods.StringConvertToKatakana(this.TextArea.Text); | |
} | |
private void ToHiraganaButton_Click_1(object sender, RoutedEventArgs e) | |
{ | |
this.TextArea.Text = NativeMethods.StringConvertToHiragana(this.TextArea.Text); | |
} | |
// (中略) | |
internal static class NativeMethods | |
{ | |
// 以下、知ってる人にはお馴染みの、文字種変換メソッド。 | |
// …なんだけど、Win8 Metro では NG! (Cert.Kitでのチェックで怒られる) | |
[DllImport("Kernel32.dll")] | |
static extern int LCMapStringW(int Locale, | |
uint dwMapFlags, | |
[MarshalAs(UnmanagedType.LPWStr)]string lpSrcStr, | |
int cchSrc, | |
[MarshalAs(UnmanagedType.LPWStr)] | |
string lpDestStr, | |
int cchDest | |
); | |
internal static string StringConvertToKatakana(string src) | |
{ | |
return StringConvert(src, dwMapFlags.LCMAP_KATAKANA); | |
} | |
internal static string StringConvertToHiragana(string src) | |
{ | |
return StringConvert(src, dwMapFlags.LCMAP_HIRAGANA); | |
} | |
internal static string StringConvert(string oriString, dwMapFlags flags) | |
{ | |
string retStr = new string(' ', oriString.Length); | |
LCMapStringW(1041, (uint)flags, oriString, oriString.Length, retStr, retStr.Length); | |
return retStr; | |
} | |
[Flags] | |
internal enum dwMapFlags : uint | |
{ | |
// (省略) | |
LCMAP_HIRAGANA = 0x00100000,//ひらがなにします。 | |
LCMAP_KATAKANA = 0x00200000,//カタカナにします。 | |
// (省略) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment