Unicodeいろいろ
Unicodeいろいろ
#include "user32.as"#include "gdi32.as"#define DT_WORDBREAK 0x00000010#define DT_EDITCONTROL 0x00002000// http://hsp.tv/play/pforum.php?mode=pastwch&num=41339#define WS_CHILD $40000000#define WS_VISIBLE $10000000#define WS_BORDER $800000#define WS_TABSTOP $10000#define ES_AUTOHSCROLL $80#define STYLE WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_AUTOHSCROLL#define UNKNOWN $200 ; HSPのインプットボックスに設定されていたEXスタイルの値#define WM_SETFONT 0x0030// オブジェクト生成// フォントをメイリオにしておくfont "メイリオ", 18, 16 : objmode 2, 1pos 0, 0// inputを使うと不具合があるので、winobjをつかう;sdim dummy;input dummy, 640, 34 : objid_input = stat : hobj_input = objinfo(objid_input, 2)objsize 640, 34winobj "Edit", "", UNKNOWN, STYLE : objid_input = stat : hobj_input = objinfo(objid_input, 2)// winobjで作成したオブジェクトのフォントを指定する(後で開放が必要)mref BMSCR, 67CreateFontIndirect varptr(BMSCR(49))hFont = statsendmsg hobj_input, WM_SETFONT, hFont, 1// 残りを描画objsize 320, 34button gosub "文字列をセット(その1)", *s1button gosub "文字列をセット(その2)", *s2button gosub "文字列の取得(その1)", *s3button gosub "文字列の取得(その2)", *s4onexit gosub *exitstop*s1// 文字をinputにセットする(objprmとかは使用しない)string.0 = 0x0bf50bf5,0x0bf50bf5,0x0bf50bf5,0x0bf50bf5,0x0bf50bf5,0x0bf50bf5string.6 = 0x0bf50bf5,0x0bf50bf5,0x0bf50bf5,0x0bf50bf5,0x0bf50bf5,0x0bf50bf5string.12 = 0// 反映SetWindowTextW hobj_input, varptr(string)return*s2// 文字をinputにセットする(objprmとかは使用しない)sdim scnvstow s, "文字列を代入したよ♪"// 反映SetWindowTextW hobj_input, varptr(s)return*s3// 文字列を取得して描画してみるsdim uni_word, 1024*2 + 2GetWindowTextW hobj_input, varptr(uni_word), 1024// 真っ白にcolor 255,255,255 : boxf : color// 表示rect = 0, 200, 640, 480DrawTextW hdc, varptr(uni_word), -1, varptr(rect), DT_WORDBREAK | DT_EDITCONTROLredrawreturn*s4// 0xXXXX の形式で取得するsdim uni_word, 1024*2 + 2GetWindowTextW hobj_input, varptr(uni_word), 1024num = statif num == 0 : dialog "失敗したとか?何も代入されていないとか?" : return// 0xXXXX に変換するsdim sfrepeat numsf += strf("0x%04X ", wpeek(uni_word, cnt*2))loopsf += "\n↑Unicode(UTF-16)"// 真っ白にcolor 255,255,255 : boxf : color// 表示rect = 0, 200, 640, 480DrawTextA hdc, varptr(sf), -1, varptr(rect), DT_WORDBREAK | DT_EDITCONTROLredrawreturn*exit// 終了時に削除DeleteObject hFontendreturn