出そうとしても失敗しました。失敗したスクリプトを置いておくのでもしよかったら
アドバイスください。
#include "Footy2.as" #include "hscallbk.as" #include "user32.as" #func Focus "" int, int, int, int #func MoveCaret "" int, int, int, int #func TextModified "" int, int, int #func InsertModeChanged "" int, int, int #const FVIRTKEY 0x0001 #const FNOINVERT 0x0002 #const FSHIFT 0x0004 #const FCONTROL 0x0008 #const FALT 0x0010 #const WM_SIZE 0x0005 #const WM_COMMAND 0x0111 #enum IDM_UNDO = 1 #enum IDM_REDO #enum IDM_CUT #enum IDM_COPY #enum IDM_PASTE #enum IDM_SELECTALL #enum IDM_ITEM1 = 1 #enum IDM_ITEM2 #enum IDM_ITEM3 #enum IDM_ITEM4 *init gosub *createGUIObjects gosub *createAccelTable gosub *setCallBackFunctions onclick gosub *onjump oncmd gosub *on_resize, WM_SIZE oncmd gosub *on_command, WM_COMMAND onexit goto *on_exit dim msg, 7 Footy2SetFocus footy_id *msg_loop GetMessage varptr(msg), 0, 0, 0 ret = stat if (ret == 0)|(ret == -1) { goto *on_exit } TranslateAccelerator hwnd, haccel, varptr(msg) if stat == 0 { TranslateMessage varptr(msg) DispatchMessage varptr(msg) } goto *msg_loop #define WS_MAXIMIZEBOX 0x00010000 #define WS_SIZEBOX 0x00040000 *createGUIObjects screen 0, ginfo_dispx, ginfo_dispy GetWindowLong hwnd, -16 SetWindowLong hwnd, -16, stat | WS_MAXIMIZEBOX | WS_SIZEBOX width 640, 480 winobj "msctls_statusbar32", "ready", , $50000000 statusbar_id = stat if statusbar_id == -1 { dialog "ウィンドウオブジェクトが正常に生成されませんでした", 1 end } dim rect, 4 GetWindowRect objinfo_hwnd(statusbar_id), varptr(rect) if stat == 0 { dialog "ステータスバーの座標取得に失敗しました", 1 end } statusbar_height = rect(3) - rect(1) Footy2Create hwnd, 0, 0, ginfo_winx, ginfo_winy - statusbar_height, 0 footy_id = stat if footy_id < 0 { dialog "Error : type " + stat, 1 end } CreatePopupMenu hMenu.0 = stat AppendMenu hMenu.0, 0, IDM_ITEM3, "サブメニュー項目 3" AppendMenu hMenu.0, 0, IDM_ITEM4, "サブメニュー項目 4" CreatePopupMenu hMenu.1 = stat AppendMenu hMenu.1, 0, IDM_ITEM1, "メニュー項目 1" AppendMenu hMenu.1, $800, 0, "" AppendMenu hMenu.1, 0, IDM_ITEM2, "メニュー項目 2" AppendMenu hMenu.1, $10, hMenu.0, "サブメニュー" return *createAccelTable sdim accel, 6*6 key = 'Z', 'Y', 'X', 'C', 'V', 'A' repeat 6 poke accel, cnt*6+0, FCONTROL | FVIRTKEY wpoke accel, cnt*6+2, key(cnt) wpoke accel, cnt*6+4, cnt+1 loop CreateAcceleratorTable varptr(accel), 6 haccel = stat if haccel == 0 { dialog "アクセラレータテーブル作成に失敗しました", 1 } return *setCallBackFunctions setcallbk proc_Focus, Focus, *onFocus setcallbk proc_MoveCaret, MoveCaret, *onMoveCaret setcallbk proc_TextModified, TextModified, *onTextModified setcallbk proc_InsertModeChanged, InsertModeChanged, *onInsertModeChanged Footy2SetFuncFocus footy_id, varptr(proc_Focus), 0 Footy2SetFuncMoveCaret footy_id, varptr(proc_MoveCaret), 0 Footy2SetFuncTextModified footy_id, varptr(proc_TextModified), 0 Footy2SetFuncInsertModeChanged footy_id, varptr(proc_InsertModeChanged), 0 return *onFocus if callbkarg(3) & $FF { message = "Footyコントロールがフォーカスを得ました" } else { message = "Footyコントロールがフォーカスを失いました" } sendmsg objinfo_hwnd(statusbar_id), $401, 0, message return *onMoveCaret sendmsg objinfo_hwnd(statusbar_id), $401, 0, "line : " + callbkarg(2) + "" return *onTextModified switch callbkarg(2) case MODIFIED_CAUSE_CHAR message = "文字が入力されました(IMEオフ)" swbreak case MODIFIED_CAUSE_IME message = "文字が入力されました(IMEオン)" swbreak case MODIFIED_CAUSE_DELETE message = "Deleteキーが押されました" swbreak case MODIFIED_CAUSE_BACKSPACE message = "BackSpaceキーが押されました" swbreak case MODIFIED_CAUSE_ENTER message = "Enterキーが押されました" swbreak case MODIFIED_CAUSE_UNDO message = "元に戻す処理が実行されました" swbreak case MODIFIED_CAUSE_REDO message = "やり直し処理が実行されました" swbreak case MODIFIED_CAUSE_CUT message = "切り取り処理が行われました" swbreak case MODIFIED_CAUSE_PASTE message = "貼り付け処理が行われました" swbreak case MODIFIED_CAUSE_INDENT message = "インデント処理が行われました" swbreak case MODIFIED_CAUSE_UNINDENT message = "逆インデント処理が行われました" swbreak case MODIFIED_CAUSE_TAB message = "タブキーが押されました" swbreak default message = "テキストが編集されました(UNKNOWN)" swbreak swend sendmsg objinfo_hwnd(statusbar_id), $401, 0, message return *onInsertModeChanged if callbkarg(2) & $FF { message = "挿入モードに変更されました" } else { message = "上書モードに変更されました" } sendmsg objinfo_hwnd(statusbar_id), $401, 0, message return *on_command switch wparam & $FFFF case IDM_UNDO Footy2Undo footy_id swbreak case IDM_REDO Footy2Redo footy_id swbreak case IDM_CUT Footy2Cut footy_id swbreak case IDM_COPY Footy2Copy footy_id swbreak case IDM_PASTE Footy2Paste footy_id swbreak case IDM_SELECTALL Footy2SelectAll footy_id swbreak swend return #const SIZE_RESTORED 0 #const SIZE_MAXIMIZED 2 *on_resize if (wparam == SIZE_RESTORED) | (wparam == SIZE_MAXIMIZED) { Footy2Move footy_id, 0, 0, ginfo_winx, ginfo_winy - statusbar_height sendmsg objinfo_hwnd(id_statusbar), WM_SIZE, SIZE_RESTORED, 0 } return 0 *destroyAccelTable if haccel != 0 { DestroyAcceleratorTable haccel } return *onjump if wparam = 2 { TrackPopupMenu hMenu.1, $100, ginfo(0), ginfo(1), 0, hwnd, 0 if stat = 0 : return dialog "項目 "+stat+" を選択!" return } return *on_exit DestroyMenu hMenu.1 gosub *destroyAccelTable end