HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0912
LMSfromGCCツールバーの作り方について4未解決


LMSfromGCC

リンク

2018/9/12(Wed) 14:56:09|NO.85324

今、メモ帳のようなものを作っています。
そこで、ツールバーを作っているのですがこのコードだと、どうしても「開く(ctrl+O)」
を押そうとするとmesboxにかぶってしまいます。
どうすればよいでしょうか?

//ソース *startup buffer 1 picload "button.png" gsel 1 screen 0,640,480 sdim box *main #include "user32.as" screen 0,ginfo_dispx,ginfo_dispy,0,,,ginfo_winx,ginfo_winy:GetWindowLong hwnd, -16:SetWindowLong hwnd, -16, stat | $10000 | $40000 objimage 1,0,0,0,20,0,20 objsize 100,20 pos 0,0 button "ファイル(F)",*F pos 100,0 button "編集(E)",*main pos 200,0 button "フォント(O)",*main pos 300,0 button "表示(V)",*main pos 400,0 button "圧縮(Z)",*main pos 500,0 button "大きさを修正(B)",*main pos 600,0 button "ヘルプ(H)",*main pos 0,20 mesbox box,ginfo_winx,ginfo_winy-20,1,0 stop *F pos 0,20 button "開く(ctrl+O)",*F_O stop *F_O



この記事に返信する


名無し

リンク

2018/9/12(Wed) 15:03:20|NO.85325

「HSP メニューバー」で検索!!



あらや

リンク

2018/9/12(Wed) 17:26:54|NO.85327

メニューバー作成用のモジュール「mod_menu.as」なんかも付属されているので
そちらを活用してみてはいかがでしょうか。

F1ヘルプの「その他」→「mod_menu:メニューバー作成」を見てください。



科学太郎

リンク

2018/9/13(Thu) 11:53:00|NO.85328

> そこで、ツールバーを作っているのですがこのコードだと、どうしても「開く(ctrl+O)」
メニューバーの事ですね。

#include "User32.as" //-------------------------------------- // マクロ命令(メニュー作成) //-------------------------------------- #define global MenuEnumBegin(%1,%2) CreatePopupMenu:h=stat:%1=stat:n=%2 ;%1=hMenu,%2=nID #define global MenuEnumMenu(%1,%2) AppendMenu h,$00000010,%2,%1 ;%1=文字列,%2=hMenu #define global MenuEnumText(%1) AppendMenu h,$00000000,n,%1:n++ ;%1=文字列 #define global MenuEnumGray(%1) AppendMenu h,$00000001,n,%1:n++ ;%1=文字列 #define global MenuEnumLine AppendMenu h,$00000800,0,$0 #define global MenuEnumEnd # #define global MenuBarBegin(%1) CreateMenu:hh=stat:%1=stat ;%1=hMenuBar #define global MenuBarItem(%1,%2) AppendMenu hh,$00000010,%2,%1 ;%1=文字列,%2=hSub #define global MenuBarEnd SetMenu hWnd,hh:DrawMenuBar hWnd //-------------------------------------- // メニューバーの作成 //-------------------------------------- ;ファイル(F) MenuEnumBegin hSub(1),1001 MenuEnumText "新規(&N)\tCtrl+N" MenuEnumText "開く(&O)...\tCtrl+O" MenuEnumText "上書き保存(&S)\tCtrl+S" MenuEnumText "名前を付けて保存(&A)..." MenuEnumLine MenuEnumText "ページ設定(&U)..." MenuEnumText "印刷(&P)...\tCtrl+P" MenuEnumLine MenuEnumText "メモ帳の終了(&X)" MenuEnumEnd ;編集(E) MenuEnumBegin hSub(2),2001 MenuEnumText "元に戻す(&U)\tCtrl+Z" MenuEnumLine MenuEnumText "切り取り(&T)\tCtrl+X" MenuEnumText "コピー(&C)\tCtrl+C" MenuEnumText "貼り付け(&P)\tCtrl+V" MenuEnumText "削除(&L)\tDel" MenuEnumLine MenuEnumGray "検索(&F)...\tCtrl+F" MenuEnumGray "次を検索(&N)\tF3" MenuEnumText "置換(&R)...\tCtrl+H" MenuEnumText "次へ移動(&G)...\tCtrl+G" MenuEnumLine MenuEnumText "すべて選択(&A)\tCtrl+A" MenuEnumText "日付と時刻(&D)\tF5" MenuEnumEnd ;書式(O) MenuEnumBegin hSub(3),3001 MenuEnumText "右端で折り返す(&W)" MenuEnumText "フォント(&F)..." MenuEnumEnd ;表示(V) MenuEnumBegin hSub(4),4001 MenuEnumText "ステータス バー(&S)" MenuEnumEnd ;ヘルプ(H) MenuEnumBegin hSub(5),5001 MenuEnumText "ヘルプの表示(&H)" MenuEnumLine MenuEnumText "バージョン情報(&A)" MenuEnumEnd ;メニューバーの作成 MenuBarBegin hMenuBar MenuBarItem "ファイル(&F)" ,hSub(1) MenuBarItem "編集(&E)" ,hSub(2) MenuBarItem "書式(&O)" ,hSub(3) MenuBarItem "表示(&V)" ,hSub(4) MenuBarItem "ヘルプ(&H)" ,hSub(5) MenuBarEnd
こんな感じでどうでしょうか?



科学太郎

リンク

2018/9/13(Thu) 17:46:15|NO.85329

追記。

メニューバーを選択すると WM_COMMAND メッセージに情報を送ります。
そこで oncmd で WM_COMMAND メッセージを受け取れるサンプルです。

//------------------------------------------------------------------------------ // メニューバーのサンプル by 科学太郎 //============================================================================== // @URL(http://hsp.tv/play/pforum.php?mode=all&num=85324)→「ツールバーの作り方について」 //------------------------------------------------------------------------------ // @URL(http://wisdom.sakura.ne.jp/system/winapi/win32/win77.html)→「メニューメッセージ」 // @URL(http://wisdom.sakura.ne.jp/system/winapi/win32/win80.html)→「メニューのソース定義」 // @URL(http://wisdom.sakura.ne.jp/system/winapi/win32/win81.html)→「メニューの削除」 //------------------------------------------------------------------------------ #include "User32.as" #include "Shell32.as" //-------------------------------------- // 記号定数(API定数) //-------------------------------------- #const global NULL 0 #const global MAX_PATH 1024 #const global WM_COMMAND $00000111 #const global WM_DROPFILES $00000233 #const global WM_EXITSIZEMOVE $00000232 #const global WM_SIZING $00000214 # #const global WM_CUT $00000300 #const global WM_COPY $00000301 #const global WM_PASTE $00000302 #const global WM_CLEAR $00000303 #const global WM_UNDO $00000304 # #const global GWL_STYLE $FFFFFFF0 #const global WS_OVERLAPPEDWINDOW $00CF0000;(WS_OVERLAPPED|WS_MAXIMIZEBOX|WS_MINIMIZEBOX|WS_THICKFRAME|WS_SYSMENU|WS_CAPTION) # #const global GWL_EXSTYLE $FFFFFFEC #const global WS_EX_ACCEPTFILES $00000010 # #const global SWP_NOSIZE $00000001 #const global SWP_NOMOVE $00000002 #const global SWP_NOZORDER $00000004 #const global SWP_FRAMECHANGED $00000020 //-------------------------------------- // マクロ命令(メニュー作成) //-------------------------------------- #define global MenuEnumBegin(%1,%2) CreatePopupMenu:h=stat:%1=stat:n=%2 ;%1=hMenu,%2=nID #define global MenuEnumMenu(%1,%2) AppendMenu h,$00000010,%2,%1 ;%1=文字列,%2=hMenu #define global MenuEnumText(%1) AppendMenu h,$00000000,n,%1:n++ ;%1=文字列 #define global MenuEnumGray(%1) AppendMenu h,$00000001,n,%1:n++ ;%1=文字列 #define global MenuEnumLine AppendMenu h,$00000800,0,$0 #define global MenuEnumEnd # #define global MenuBarBegin(%1) CreateMenu:hh=stat:%1=stat ;%1=hMenuBar #define global MenuBarItem(%1,%2) AppendMenu hh,$00000010,%2,%1 ;%1=文字列,%2=hSub #define global MenuBarEnd SetMenu hWnd,hh:DrawMenuBar hWnd //-------------------------------------- // メイン部 //-------------------------------------- *Main screen 0,ginfo_dispX,ginfo_dispY,SCREEN_NORMAL,,,640,480 title "メニューバーのサンプル by 科学太郎" ;設定 GetWindowLong hWnd,GWL_STYLE SetWindowLong hWnd,GWL_STYLE,stat|WS_OVERLAPPEDWINDOW GetWindowLong hWnd,GWL_EXSTYLE SetWindowLong hWnd,GWL_EXSTYLE,stat|WS_EX_ACCEPTFILES SetWindowPos hWnd,NULL,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED ;割込 oncmd gosub *OnCommand, WM_COMMAND oncmd gosub *OnDropFiles, WM_DROPFILES oncmd gosub *OnSizing, WM_EXITSIZEMOVE oncmd gosub *OnSizing, WM_SIZING ;作成 CreateMenuBar ;配置 sdim sBuff,1024*1024 mesbox sBuff,ginfo_winX,ginfo_winY,5,0 stop //-------------------------------------- // メニューバーの作成 //-------------------------------------- #deffunc CreateMenuBar\ local hSub,\ local hMenuBar ;ファイル(F) MenuEnumBegin hSub(1),1001 MenuEnumText "新規(&N)\tCtrl+N" MenuEnumText "開く(&O)...\tCtrl+O" MenuEnumText "上書き保存(&S)\tCtrl+S" MenuEnumText "名前を付けて保存(&A)..." MenuEnumLine MenuEnumText "ページ設定(&U)..." MenuEnumText "印刷(&P)...\tCtrl+P" MenuEnumLine MenuEnumText "メモ帳の終了(&X)" MenuEnumEnd ;編集(E) MenuEnumBegin hSub(2),2001 MenuEnumText "元に戻す(&U)\tCtrl+Z" MenuEnumLine MenuEnumText "切り取り(&T)\tCtrl+X" MenuEnumText "コピー(&C)\tCtrl+C" MenuEnumText "貼り付け(&P)\tCtrl+V" MenuEnumText "削除(&L)\tDel" MenuEnumLine MenuEnumGray "検索(&F)...\tCtrl+F" MenuEnumGray "次を検索(&N)\tF3" MenuEnumText "置換(&R)...\tCtrl+H" MenuEnumText "次へ移動(&G)...\tCtrl+G" MenuEnumLine MenuEnumText "すべて選択(&A)\tCtrl+A" MenuEnumText "日付と時刻(&D)\tF5" MenuEnumEnd ;書式(O) MenuEnumBegin hSub(3),3001 MenuEnumText "右端で折り返す(&W)" MenuEnumText "フォント(&F)..." MenuEnumEnd ;表示(V) MenuEnumBegin hSub(4),4001 MenuEnumText "ステータス バー(&S)" MenuEnumEnd ;ヘルプ(H) MenuEnumBegin hSub(5),5001 MenuEnumText "ヘルプの表示(&H)" MenuEnumLine MenuEnumText "バージョン情報(&A)" MenuEnumEnd ;メニューバーの作成 MenuBarBegin hMenuBar MenuBarItem "ファイル(&F)" ,hSub(1) MenuBarItem "編集(&E)" ,hSub(2) MenuBarItem "書式(&O)" ,hSub(3) MenuBarItem "表示(&V)" ,hSub(4) MenuBarItem "ヘルプ(&H)" ,hSub(5) MenuBarEnd return //-------------------------------------- // メニューバーの選択 //-------------------------------------- *OnCommand ;ファイル(F) if(wParam==1001):dialog "新規" if(wParam==1002): if(wParam==1003): if(wParam==1004): if(wParam==1005): if(wParam==1006): if(wParam==1007):end ;編集(E) if(wParam==2001):sendmsg objinfo_hwnd(0),WM_UNDO if(wParam==2002):sendmsg objinfo_hwnd(0),WM_CUT if(wParam==2003):sendmsg objinfo_hwnd(0),WM_COPY if(wParam==2004):sendmsg objinfo_hwnd(0),WM_PASTE if(wParam==2005):sendmsg objinfo_hwnd(0),WM_CLEAR if(wParam==2006): if(wParam==2007): if(wParam==2008): if(wParam==2009): if(wParam==2010): if(wParam==2011): ;書式(O) if(wParam==3001): if(wParam==3002): ;表示(V) if(wParam==4001): ;ヘルプ(H) if(wParam==5001):dialog "ヘルプの表示" if(wParam==5002):dialog "バージョン情報" return 0 //-------------------------------------- // ドラッグ&ドロップの処理 //-------------------------------------- *OnDropFiles sdim sFile,MAX_PATH SetForegroundWindow hWnd DragQueryFile wParam,0,varptr(sFile),MAX_PATH DragFinish wParam ;読み込み notesel sBuff noteload sFile noteunsel objprm 0,sBuff return 0 //-------------------------------------- // メッセージボックスのサイズ変更 //-------------------------------------- *OnSizing SetWindowPos objinfo_hwnd(0),NULL,0,0,ginfo_winX,ginfo_winY,SWP_NOMOVE|SWP_NOZORDER return 0 //------------------------------------------------------------------------------ // End of sample327(メニューバーのサンプル).hsp //------------------------------------------------------------------------------

ファイルをウインドウにドロップするとテキスト内容をメッセージボックスに入力します。
あとウインドウのサイズ変更をすると
メッセージボックスのサイズも自動的に変更します。



ONION software Copyright 1997-2023(c) All rights reserved.