+// マルチバイト文字列からコードポイントと次のポインタを取得\r
+// エンコードが不正な場合は0x80000000を返す\r
+DWORD GetNextCharM(LPCSTR lpString, LPCSTR* ppNext)\r
+{\r
+ DWORD Code;\r
+ int i;\r
+ Code = 0;\r
+ if((*lpString & 0xfe) == 0xfc)\r
+ {\r
+ i = 5;\r
+ Code |= (DWORD)*lpString & 0x01;\r
+ }\r
+ else if((*lpString & 0xfc) == 0xf8)\r
+ {\r
+ i = 4;\r
+ Code |= (DWORD)*lpString & 0x03;\r
+ }\r
+ else if((*lpString & 0xf8) == 0xf0)\r
+ {\r
+ i = 3;\r
+ Code |= (DWORD)*lpString & 0x07;\r
+ }\r
+ else if((*lpString & 0xf0) == 0xe0)\r
+ {\r
+ i = 2;\r
+ Code |= (DWORD)*lpString & 0x0f;\r
+ }\r
+ else if((*lpString & 0xe0) == 0xc0)\r
+ {\r
+ i = 1;\r
+ Code |= (DWORD)*lpString & 0x1f;\r
+ }\r
+ else if((*lpString & 0x80) == 0x00)\r
+ {\r
+ i = 0;\r
+ Code |= (DWORD)*lpString & 0x7f;\r
+ }\r
+ else\r
+ i = -1;\r
+ lpString++;\r
+ while((*lpString & 0xc0) == 0x80)\r
+ {\r
+ i--;\r
+ Code = Code << 6;\r
+ Code |= (DWORD)*lpString & 0x3f;\r
+ lpString++;\r
+ }\r
+ if(i != 0)\r
+ Code = 0x80000000;\r
+ if(ppNext)\r
+ *ppNext = lpString;\r
+ return Code;\r
+}\r
+\r